トップ  »  コンピュータガイド  »  開発言語・スクリプト  »  PHP  »  "PHP4.2.3国際化版"をApache DSOとしてLinuxにインストール

"PHP4.2.3国際化版"をApache DSOとしてLinuxにインストール

本家のPHPがマルチバイト対応になった今となっては少々情報として古いのですが、もしかしたら何らかの事情でこの情報を必要としている方がいらっしゃるかもしれないと思い、以前私がメモっていた内容を一部手直ししてアップしました。
尚、以下の内容はApacheのDSOとしてインストールする方法ですので、インストール前にApacheをDSO対応にしてインストールしてください。
ApacheのDSO対応としてのインストール方法は「"Apache1.3.37(Unix Source)"をLinuxにインストール」のページを参照してください。

1. PHP4.2.3国際化版のソースを入手する

PHP国際化版のソースは「http://nx.eth.jp/hiki.cgi?PHP-i18n-Download」からダウンロード可能です。
"php-4.2.3-multibyte.tar.gz"をダウンロードして、"/usr/local/src"等に保存します。

2. PHP4.2.3国際化版のソースを展開する

保存したファイルを展開します。

[user@host root]# cd /usr/local/src/
[user@host src]# tar zxvf php-4.2.3-multibyte.tar.gz
       (展開の実行画面が流れる。)
                   :
                   :

3. configure

"/usr/local/src/php-4.2.3"ディレクトリに展開されるので、そこへ移動してconfigureします。
国際化版として(日本語を利用可能にする)必要最低限のオプションは以下の通りです。

*1 --enable-zend-multibyte
国際化版PHP4の機能を有効にします。このオプションが指定されると、encodingディレクティブを使用してスクリプトエンコーディングを明示出来るようになります。
*2 --enable-mbstring
"--enable-zend-multibyte"が指定され、且つこのオプションが指定されていると"php.ini"もしくは".htaccess"の"mbstring.script_encoding"ディレクティブが有効になります。これによりシステム全体もしくはディレクトリごとのスクリプトエンコーディングの指定や自動検出が可能になります。
※マルチバイト文字列関数(mbstring)のサポート
*3 --enable-mbstr-enc-trans
"--enable-zend-multibyte"と"--enable-mbstring"が指定され、且つこのオプションが指定されているとスクリプトエンコーディングから内部エンコーディングへの自動変換がサポートされます。
*4 --with-apxs=/usr/local/apache/bin/apxs
PHPをApacheのDSO版にします。
※"/usr/local/apache"の部分はApacheのインストール先の指定によって変わります。
*5 --enable-mbregex
マルチバイト正規表現関数(mbregex)をサポートするようにします。
*6 --without-mysql
ビルトインされているMySQLのサポートを外します。
※MySQLを利用される場合はこのオプションは必要ありません。
[user@host src]# cd php-4.2.3/
[user@host php-4.2.3]# ./configure --enable-zend-multibyte \     (*1)
> --enable-mbstring \                                            (*2)
> --enable-mbstr-enc-trans \                                     (*3)
> --with-apxs=/usr/local/apache/bin/apxs \                       (*4)
> --enable-mbregex \                                             (*5)
> --without-mysql                                                (*6)
       ("configure"の実行画面が流れる。)
                   :
                   :

これら以外のオプションについては通常版のPHPと同じですのでそちらを参照の上、ご自身の目的に合わせて追加してください。
例えば、OracleやPostgreSQLといった各データベースを利用する場合には以下のオプションが必要です。

--with-oci8=/opt/oracle/product/9.0.1
Oracle(OCI8関数)を利用可能にします。
"/opt/oracle/product/9.0.1"の部分はOracle用の環境変数として指定した"$ORACLE_HOME"のディレクトリを指定します。
--with-pgsql=/usr/local/pgsql
PostgreSQL(PostgreSQL関数)を利用可能にします。
"/usr/local/pgsql"の部分はPostgreSQLをインストールしたディレクトリを指定します。

4. コンパイルとインストール

"configure"が完了したら"make"(コンパイル)し、"make install"(インストール)します。

[user@host php-4.2.3]# make
       (コンパイルの実行画面が流れる。)
                   :
                   :
[user@host php-4.2.3]# make install
       (インストールの実行画面が流れる。)
                   :
                   :
[user@host php-4.2.3]#

エラー無くインストールが完了し、"[Apacheのインストール先]/libexec"ディレクトリに"libphp4.so"が追加されていれば、とりあえずインストールは成功したといえます。

5. php.iniの設定

インストール時の作業ディレクトリ(上記の手順どおりにきてれば現在のカレントディレクトリ)に"php.ini-recommended"ファイルがあるのでそれを"/usr/local/lib/php.ini"としてコピーし、以下の様に編集・保存します。

[user@host php-4.2.3]# cp ./php.ini-recommended /usr/local/lib/php.ini
[user@host php-4.2.3]# vi /usr/local/lib/php.ini
                   :
output_handler = mb_output_handler     <- "mb_output_handler"を追記
                   :
display_errors = On     <- "Off"の部分を"On"に変更
                   :
                   :
mbstring.internal_encoding = EUC-JP     <- アンコメント
mbstring.http_input = auto              <- アンコメント
mbstring.http_output = SJIS             <- アンコメント
mbstring.detect_order = auto            <- アンコメント
mbstring.substitute_character = none;   <- アンコメント
                   :
output_handler = mb_output_handler
"mb_output_handler"を指定する事によって、出力バッファの文字を内部文字エンコーディングからHTTP出力文字エンコーディングに変換可能となります。
display_errors = On
"On"を指定する事によって、PHP実行時にエラーがあった場合にHTMLの一部として画面に出力されるようになります。
開発時には必要ですが、開発したスクリプトに問題があった場合にその内容を晒す事になる等のセキュリティ上の観点から、公開する場合には"Off"に設定した方が良いでしょう。
あくまで開発者向けの機能であるという事です。
mbstring.internal_encoding = EUC-JP
内部文字エンコーディングのデフォルト値を定義します。
国際化版のPHP4が対応しているエンコーディングは以下の様になっています。
  • UTF-8, UTF8
  • EUC-JP, EUC_JP, eucJP, x-euc-jp
  • Shift_JIS, sjis, x-sjis
  • ASCII, us-ascii
mbstring.http_input = auto
HTTP入力文字エンコーディングのデフォルト値を定義します。
mbstring.http_output = SJIS
HTTP出力文字エンコーディングのデフォルト値を定義します。
mbstring.detect_order = auto
文字コード検出のデフォルト値を定義します。
"auto"を指定すると、値は"ASCII, JIS, UTF-8, EUC-JP, SJIS"として展開されこの順に自動文字エンコーディングの検出がされる事になります。
mbstring.substitute_character = none;
無効な文字を代替する文字を定義します。

6. Apache(httpd.conf)の設定

Apacheの設定は「"Apache1.3.37"のLinuxでの設定」ページの「PHP4を使う為の設定」を参照してください。
全ての設定が終ったら、設定を反映させる為にApacheを再起動してください。

7. 動作確認

適当なPHPのスクリプトを書いて実行してみれば動く動かないは確認できますが、"phpinfo()"関数を使えばどのように組み込まれているかの確認も出来ますのでこれを使って確認します。

記述する内容はとても簡単で、"phpinfo()"関数を呼び出す記述をするだけです。
以下のように"phpinfo()"関数呼び出しの一文を記述したファイルをApacheのドキュメントルート配下に置いて、ウェブブラウザで参照してみます。
ファイル名は「phpinfo.php」でも「test.php」でも構いませんが、拡張子「.php」はApacheの設定でPHPスクリプトとして認識するように設定したものでなくてはいけません。

<?php    phpinfo();    ?>

PHPのバージョンを始め、組み込まれたモジュールの詳細やApacheの環境情報などがズラズラっと表示されれば問題なくPHPが組み込まれたといって良いでしょう。

トラックバック(0)

トラックバックURL: http://www.ezms.net/mt/mt-tb.cgi/27