PHPのインストール(CentOS4.x編)



CentOSの場合、インストール時にWWWサーバを選択していればPHPの基本はデフォルトでインストール されます。もちろん、ApacheもPHP対応になっていますが、日本語対応用のモジュールはインストールされませんのでそれだけは対処が必要です。

■PHPのインストールと設定

CentOSのApacheはPHP対応になっているので、必要なモジュールを組み込むだけです。

  1. 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

  2. 上 記の「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も 設定例が載っていますが、おやじが得た設定に関する結論は以下のとおりです。


ここでは、設定変更したところを中心に記載します。

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の設定の概要は、以下のとおりです。

  1. output_buffering = Off :一般的に出力バッファリン グ制御をチャント実行しているとは思えませんので、ここはOffを指定。
  2. ;output_handler =  : 出力の変換をする場合は変換を有効にするためにmb_output_handlerを指定するが、無変換なので無効のままと する。
  3. default_charset = "" : ここでは、PHPがContent-type:ヘッダでcharacter encodingを出力するコードを指定するが、コードはソフ トに依存するのでcharsetの送信を無効(空)にし透過させる。
  4. mbstring.language = Japanese : mbstringで使用される言語のデフォルト値
  5. mbstring.internal_encoding = EUC-JP : 内部文字エンコーディングのデフォルト値
  6. mbstring.http_input = pass : HTTP入力文字エンコーディングを指定するが、透過なので「pass」とする。
  7. mbstring.http_output = pass : HTTP出力文字エンコーディングを指定するが、透過なので「pass」とする。
  8. mbstring.encoding_translation = Off : HTTP入力文字エンコーディング検出および内部文字エンコーディングへの変換用であるが、無変換なので「Off」とする。
  9. mbstring.detect_order = EUC-JP,SJIS,JIS,UTF-8,ASCII : 文字コードの検出順序でありデフォルトはauto。但し、autoの検出順序がASCII, JIS, UTF-8, EUC-JP, SJISのため誤検出するようなので、順序を入れ替え指定。
  10. 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へ