PHPのインストール(CentOS4.x編)
CentOSの場合、インストール時にWWWサーバを選択していればPHPの基本はデフォルトでインストール
されます。もちろん、ApacheもPHP対応になっていますが、日本語対応用のモジュールはインストールされませんのでそれだけは対処が必要です。
■PHPのインストールと設定
CentOSのApacheはPHP対応になっているので、必要なモジュールを組み込むだけです。
- PHP関連のパッケージのインストール状況を確認する。
# yum list | grep php
php.i386
4.3.9-3.6 installed
php-ldap.i386
4.3.9-3.6 installed
php-mysql.i386
4.3.9-3.6 installed
php-pear.i386
4.3.9-3.6 installed
php-devel.i386
4.3.9-3.6 base
php-domxml.i386
4.3.9-3.6 base
php-gd.i386
4.3.9-3.6
base php-imap.i386
4.3.9-3.6 base
php-mbstring.i386
4.3.9-3.6 base
php-ncurses.i386
4.3.9-3.6 base
php-odbc.i386
4.3.9-3.6 base
php-pgsql.i386
4.3.9-3.6 base
php-snmp.i386
4.3.9-3.6 base
php-xmlrpc.i386
4.3.9-3.6 base |
- 上
記の「php」から「php-pear」までの4パッケージがインストールされているか確認し、インストールされていないパッケージを下記のように列挙し
てインストールする。通常は、インストールされているはずであり、最後の日本語対応用の「php-mbstring」のみを追加インストールすればよい。
#
yum install php php-ldap php-mysql php-pear php-mbstring |
■PHPの設定
PHPの設定は、 /etc/php.ini で設定しますが、SquirrelMailやPostfix
Adminを動かす程度ならデフォルト設定のままで問題なく動作します。
PHPの設定は結構厄介で、設定を誤ると文字化けに悩まされることになります。いろいろなサイトにphp.iniも
設定例が載っていますが、おやじが得た設定に関する結論は以下のとおりです。
- 一
般的にPHPの記述コードとHTTP出力のコードは一致しているため、透過・無変換を基本とする。
→
この設定なら、例えば、phpMyAdminはUTF-8で自作PHPはEUC-JPといった具合に、システムに
複数のコード系が混在しても文字化けすることは無い。 - 上記の条件に合わないアプリ(PHPの記述コードが
EUC-JPでHTTP出力のコードがShift_JIS等)は、当該アプリだけ「.htaccess」で個別の変換を行うとよい。
→ SmartyなどはEUC-JPが前提のためHTTP出力をShift_JISにしたりすると文字化け問題が発生するが、それはソフトのコー
ディーングの問題なので、個別に対処すべき話。
ここでは、設定変更したところを中心に記載します。
output_buffering = 4096 ;output_handler = default_charset = "" [mbstring] mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = pass mbstring.http_output =
pass mbstring.encoding_translation = Off mbstring.detect_order = EUC-JP,SJIS,JIS,UTF-8,ASCII mbstring.substitute_character = none
|
php.iniの設定の概要は、以下のとおりです。
- output_buffering = Off
:一般的に出力バッファリン
グ制御をチャント実行しているとは思えませんので、ここはOffを指定。
- ;output_handler
= :
出力の変換をする場合は変換を有効にするためにmb_output_handlerを指定するが、無変換なので無効のままと
する。
- default_charset
= "" : ここでは、PHPがContent-type:ヘッダでcharacter
encodingを出力するコードを指定するが、コードはソフ
トに依存するのでcharsetの送信を無効(空)にし透過させる。
- mbstring.language = Japanese :
mbstringで使用される言語のデフォルト値
- mbstring.internal_encoding
= EUC-JP : 内部文字エンコーディングのデフォルト値
- mbstring.http_input
= pass : HTTP入力文字エンコーディングを指定するが、透過なので「pass」とする。
- mbstring.http_output
= pass : HTTP出力文字エンコーディングを指定するが、透過なので「pass」とする。
- mbstring.encoding_translation
= Off : HTTP入力文字エンコーディング検出および内部文字エンコーディングへの変換用であるが、無変換なので「Off」とする。
- mbstring.detect_order
= EUC-JP,SJIS,JIS,UTF-8,ASCII : 文字コードの検出順序でありデフォルトはauto。但し、autoの検出順序がASCII, JIS,
UTF-8, EUC-JP, SJISのため誤検出するようなので、順序を入れ替え指定。
- mbstring.substitute_character
= none : 無効な文字を代替する文字
なお、PHPはEUC-JPで記述されているが、HTTP出力では
Shift_JISで出力されるような場合は、そのアプリだけ .htaccess
で指定してあげればよい。PHPがEUC-JPで出力がShift_JISの場合の.htaccessの記述例を下記に示します。 なお、.
htaccessで記述する場合は、下記が参考になるでしょう。
http://www.shigeweb.jp/php/project_p/?section=setup&page=htaccess
<IfModule
mod_php5.c> #
文字エンコーディングを指定したエンコーディングに変換。 #
output_handler で "mb_output_handler" 指定時は、自動で output_buffering On
# となるので、output_bufferingは省略可。
# php_flag output_buffering On
php_value output_handler "mb_output_handler"
# PHPの記述コード系(ex. EUC-JP)を指定。
php_value mbstring.internal_encoding "EUC-JP"
# HTTPの出力コード系(ex. SJIS)を指定。
php_value mbstring.http_output "SJIS"
</IfModule> |
■ApacheのPHP関連の設定
ApacheのPHP関係の設定を行います。と書きましたが、 /etc/httpd/conf.d/php.conf
に既に設定がされており、これも通常は設定変更不要です。
# cat
/etc/httpd/conf.d/php.conf LoadModule
php4_module modules/libphp4.so AddType
application/x-httpd-php .php
DirectoryIndex index.php #
/etc/rc.d/init.d/httpd2 restart |
■PHPの動作確認
ここで、PHPが正常に動作しているか確認しておきます。下記のように適当な名前のphpファイルを作成し
Documentrootに置き、ブラウザで http://www.aconus.com/test.php
とアクセスすると、PHPが使えるようになっていればサーバのPHP関係の情報が表示されます。
# vi
/var/www/html/test.php
<?php
phpinfo(); ?>
[Esc]、[:]、[w]、[q]で保存。 |
Top
Pageへ