php-4.3.11 インストールメモ #--------------------------------------------------------------------------------------------- # php 概要 #--------------------------------------------------------------------------------------------- php は小・中規模サイトを構築する際に良く用いられるスクリプト言語です。近年、php の日本語化が急速に行われたこと、apache のメモリ上で実行されることで高速に動作することを理由に日本でも盛んにphp での開発が行われています。 php は3.x 系の開発から日本語化対応され、現在はphp5.x 系が支流となっています。しかし、オープンソースであるが故、頻繁にセキュリティーホールが発見されているのでphp のバージョン管理には注意しなければいけません。今回は、php-5.x のインストール方法をご紹介します。 現在php は標準で多くのレンタルサーバーで採用されています。占有サーバーではphp をモジュール版として利用しますが、レンタルサーバーではphp をcgi 版でかつモジュールのように動作させる方法が一般的となってきました。以下、用途ごとのphp インストール方法を紹介します。 なお、今回はphp-4.3.11 をインストールします。 #--------------------------------------------------------------------------------------------- # php のインストールオプション #--------------------------------------------------------------------------------------------- php-4.3.0 以降 --enable-mbstr-enc-trans オプションは廃止され、入出力自動エンコーディングの設定はphp.ini 内の設定 mbstring.encoding_translation に依存します。 php-4.2.0 以降 --enable-trans-sid オプションは常に有効としてコンパイルされます。 php4.3.0 以降 --enable-mbstring オプションに関して、configure での指定の仕方が --enable-mbstring=[LANG] に変更されています。なお、php4.3.0 以降ではディフォルトで文字コーディングの機能が有効となりました。 php4.3.0 以降は標準でGD ライブラリがソースコードと一緒に配布されます。同封のGD ライブラリを使用することが奨励されていますが、日本語対応していません。GD は別途個別に用意して利用してください。 --enable-mbregex はマルチバイト対応の正規表現関数を利用可能とします。 --enable-cli、--enable-cgi はcgi 版php とcli 版php のインストールを強制します。 --enable-discard-path はcgi 版php インタプリタをウェブディレクトリツリー以外の場所に配置することを可能とします。 #--------------------------------------------------------------------------------------------- # モジュール版 php のインストール方法 #--------------------------------------------------------------------------------------------- php-4.3.11 のソースをインターネットよりダウンロード後、ソースを解凍します。 # su root # cd /usr/local/src/ # wget http://public.www.planetmirror.com/pub/php/distributions/php-4.3.11.tar.gz # tar zxvf php-4.3.11.tar.gz php-4.3.11 を解凍後、ディレクトリに入りインストール作業を行います。 # cd php-4.3.11 # ./configure --prefix=/usr/local/php --with-apxs=/usr/local/apache/bin/apxs --with-config-file-path=/usr/local/php/etc --enable-mbstring=ja --enable-mbregex # make # make install # cp php.ini-dist /usr/local/php/etc/php.ini apache の設定ファイルにphp をモジュールとして動作させる設定を記載します。 # cd /usr/local/apache/conf # vi httpd.conf に下記の記述を追加 LoadModule php4_module libexec/libphp4.so AddModule mod_php4.c AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps 最後に、apache をリスタートさせ、php を有効にします。 # /usr/local/apache/bin/apachectl restart #--------------------------------------------------------------------------------------------- # cgi版 php のインストール方法 #--------------------------------------------------------------------------------------------- cgi 版php は、php スクリプトの設置方法か2 種類に分けることができます。 ・他のcgi スクリプトと同じように、shebang + 実行権限 を付与して設置するもの ・モジュール版php と同じように設置するもの(php インタプリタをユーザー領域に配置) ・モジュール版php と同じように設置するもの(php インタプリタを/usr/local 領域に配置) ● 他のcgi スクリプトと同じように、shebang + 実行権限 を付与して設置するもの この方法ではperl プログラムを書く要領でphp プログラムを設置できます。例えば、 #!/usr/local/php/bin/php 上記のようなプログラムをindex.cgi ファイルとして保存し、ドキュメントルートに設置、設置後、適切なオーナーと権限を与えた上でウェブ上から実行できます。ただし、php が --force-cgi-redirect 付きでコンパイルされていた場合、php バイナリを直接アクセスできなくなるので、実行時にエラーとなります。 この方法では、モジュール版php からCGI 版php に環境移行する際、shebang の記述が必要になるので、容易に移行できないという理由からあまり利用されません。 ● モジュール版php と同じように設置するもの(php インタプリタをユーザー領域に配置) この方法では、php スクリプトをあたかもモジュール版php と同じように設置できます。つまり、shebang の記述は不要で、読み込み権限さえあれば十分です。このとき、実際apache の設定は次のようにされています。 Action php-script "/cgi-bin/php.cgi" AddHandler php-script .php 上記は、拡張子.php のついたphp スクリプトがリクエストされたら、ユーザー領域のcgi-bin ディレクトリにあるphp.cgi を適用しろという意味です。この場合、php.cgi にオーナー設定、実行権限は必要ですが、php.cgi に渡されるphp スクリプトに実行権限は必要ありません(php.cgi から読めれば十分)。 ただし、この方法では、shebang の記述は必要ありませんが、php.cgi をユーザー領域に置かなければいけないため、実用的ではありません。 ● モジュール版php と同じように設置するもの(php インタプリタを/usr/local 領域に配置) この方法では、php スクリプトをあたかもモジュール版php と同じように設置でき、かつshebang の記述は不要、/usr/local/ 領域にphp.cgi を置き運用することができます。 これを実現するためにはsuPHP プログラム(mod_suPHP モジュール) をapache に適用します。下記の方法でsuPHP をインストールしてください。 # su root # cd /usr/local/src/ # wget suphp-0.6.2.tar.gz # tar zxvf suphp-0.6.2.tar.gz # cd suphp-0.6.2 # ./configure --prefix=/usr/local/suphp # make # make install # mkdir /usr/local/suphp/etc # mkdir /usr/local/suphp/log # cp ./doc/suphp.conf.sample /usr/local/suphp/etc/suphp.conf インストール後、suPHP の設定を行います。おおむねsuExec と同内容の設定を行います。 # cd /usr/local/suphp/etc # vi suphp.conf ↓ココから ------------------------------------------------- ; suPHP のログファイルの場所を指定 logfile=/usr/local/suphp/log/suphp.log ; php cgi 版を実行するディレクトリパスを指定 docroot=/ ; apache の実行ユーザーを指定 webserver_user=nobody ; 作成されるファイルのデフォルトパーミッションを644にする umask=0022 ; php プログラムを実行可能な最小ユーザーID を指定 min_uid=2000 ; php プログラムを実行可能な最小グループID を指定 min_gid=2000 ; php cgi 版プログラムの場所を指定 x-httpd-php=php:/usr/local/php4.3/bin/php ↑ココまで ------------------------------------------------- suPHP の設定後、apache の設定を行います。suPHP をどのバーチャルホストに適応するか、php スクリプトの実行ユーザー権限などを設定します。 # cd /usr/local/apache/conf # vi httpd.conf ↓ココから ------------------------------------------------- LoadModule suphp_module libexec/mod_suphp.so AddModule mod_suphp.c suPHP_UserGroup web-root ppp suPHP_Engine on suPHP_AddHandler x-httpd-php AddHandler x-httpd-php .php ↑ココまで ------------------------------------------------- 上記どの方法でphp をインストールするにも、cgi 版をインストールするには変わりありません。下記のようにphp cgi 版をインストールしてください。なお、suPHP を実装する際は、suPHP はphp cgi 版のインストールの後にインストールしてください。 php-4.3.11 のソースをインターネットよりダウンロード後、ソースを解凍します。 # su root # cd /usr/local/src/ # wget http://public.www.planetmirror.com/pub/php/distributions/php-4.3.11.tar.gz # tar zxvf php-4.3.11.tar.gz # cd php-4.3.11 # ./configure --prefix=/usr/local/php --force-cgi-redirect --enable-discard-path --enable-mbstring=ja --enable-mbregex # make # make install