本日も乙

ただの自己満足な備忘録。

さくらVPS(CentOS 6.2)でソースからPHP5.4.10をインストール

前回yumPHPをインストールしました。 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の設定はphp.iniというファイルで行います。

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/に設置します *3php.iniはインストール時に2種類用意されています。

  • php.ini-production ・・・ 本番環境用
  • php.ini-development ・・・ 開発用

開発用の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が表示されていなければ完了です。

ApachePHPの連携

ブラウザ上でPHPを動かすには、ApachePHPを連携する必要があります。

# /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();

*1:PHPを複数バージョンインストールすることもできますので別途記事で紹介する予定です

*2:こちらの記事を参照

*3:php.iniの設置場所は--with-config-file-pathオプションで変更可能です