前回はyumでPHPをインストールしました。 yumからだと簡単にインストールできて便利ですが、拡張モジュールを追加する場合はソースからインストールした方が便利です。 そこで今回はPHP5.4.10をソースからインストールしてみます *1。
目標
- PHP5.4.10をソースからインストールする
サーバ環境
インストール
必要なパッケージをインストールする
yumパッケージリストを参考にインストールします。
ソースのダウンロード、解凍
$ wget --trust-server-names http://jp2.php.net/get/php-5.4.10.tar.gz/from/jp.php.net/mirror
$ tar zxvf php-5.4.10.tar.gz
--trust-server-names オプションを追加することでミラーサイトのファイルをダウンロードすることができます *2。
最新版はhttp://www.php.net/downloads.phpから探してください。
インストール
$ cd php-5.4.10
$ ./configure ...(オプション)
configureオプションについては、phpのconfigureオプションを参考にしてください、configureオプションはPHPに組み込みたいモジュールに応じて追加します。 もし、インストール後にモジュールを追加したい場合は、もう一度コンパイルし直してインストールしてください。
ここで足りないパッケージがあったり何かしらのエラーが生じると、configure実行途中で止まるのでエラー内容をググって対処します。 下記のようなメッセージが表示されればOKです。
Generating files
configure: creating ./config.status
creating main/internal_functions.c
creating main/internal_functions_cli.c
+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+
Thank you for using PHP.
configureが通ったら、makeコマンドを実行します。
$ make
$ make test
make testも無事通過すれば最後にmake installしてインストール完了です。
$ sudo make install
設定
php.iniの設置
iniファイルを設置します。 設置場所が分からない場合は、以下のコマンドで調べることができます。
$ php -i | grep "Configuration File (php.ini)"
Configuration File (php.ini) Path => /usr/local/php-5.4.10/lib
今回はiniファイルを/usr/local/php-5.4.10/lib/に設置します *3。 php.iniはインストール時に2種類用意されています。
開発用のphp.ini(php.ini-development)はエラーの内容をブラウザに表示させたりデバッグ等ができたりするため、サーバを公開している場合は本番環境のphp.ini(php.ini-production)にした方が良いでしょう。 もし、開発途中でどうしても途中でphpのエラーやデバッグ情報をブラウザに表示させたい場合は、php.iniの内容を一時的に変更するか、ini_set()を使います。
$ sudo cp php.ini-production /usr/local/php-5.4.10/lib/php.ini
php.iniの設定
今回はとりあえずタイムゾーンだけ設定します。
; /usr/local/php-5.4.10/lib/php.ini
date.timezone = Asia/Tokyo
インストール確認
以下のように表示されていればインストールは成功しています。
$ php -v
PHP 5.4.10 (cli) (built: Jun 5 2012 15:36:16)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/xxxxxxxx/xxxxx.so' - /usr/lib/xxxxxxxx/xxxxx.so: cannot open shared object file: No such file or directory in Unknown on line XX
上記のようなエラーが表示された場合は、/etc/php.d以下にxxxx.soに対応したiniファイルがあるので編集してコメントアウトすれば良いです。コメントアウトしてもそのモジュールは問題なく使えるみたいです。
; /etc/php.d/xxxxx.ini
; Enable xxxxx extension module
; コメントアウト
; extension=xxxxx.so
Webサーバ(Apacheやnginx)を再起動して再度確認します。
$ sudo service httpd restart
$ php -v
Warningが表示されていなければ完了です。
ApacheとPHPの連携
ブラウザ上でPHPを動かすには、ApacheとPHPを連携する必要があります。
# /usr/local/apache2/conf/httpd.conf
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
# 以下2行を追加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
Apacheを再起動します。
$ sudo service httpd restart
ドキュメントルート(デフォルト:/usr/local/apache2/htdocs)に以下のようなファイル(phpinfo.php)を設置し、ブラウザからhttp://localhost/phpinfo.php にアクセスしてPHP情報が見れれば正常に動作しています。 phpinfo()インストールしているPHPの情報が見られてしまうため、確認後、phpinfo.phpはすぐに削除してください。
<?php
phpinfo();