Ubuntu 9.0.4 へ PHP5.3.0 動作環境を作る

先日VirtualBox3.0.1 へ セットアップした Ubuntu9.0.4 に PHP5.3.0をビルドする。
apache, php, mysqlUbuntuのセットアップ時にインストールしておいたものとする。
phpはデフォルトの状態だと、5.2.6がインストールされていた。

インストールログ

とりあえずまっさらなUbuntuに実行する事をまとめておく

まずは開発環境(以下全てsudo権限で実行)
% apt-get update
% apt-get install build-essential
参考にしたアシアルさんのブログをもとに、libxml2インストールを先に行う
% cd /usr/lib
% ln -s libxml2.so.2 libxml2.so
% aptitude install libxml2-dev
apache2のモジュールとして動かしたいので、apxs2モジュールをインストール
% apt-get install apache2-prefork-dev


※以下も参照

% apache2 -V

で、表示される内容のうち、
Server MPM
の値が、「worker」だったら、

% apt-get install apache2-threaded-dev

を実行する。
今回は「prefork」だったので、先の方法でインストールした。

PHP5.3.0 落としてくる
% cd /usr/local/lib
% wget http://jp2.php.net/get/php-5.3.0.tar.gz/from/jp.php.net/mirror
% tar zxvf php-5.3.0.tar.gz
% cd ./php-5.3.0
インストール(configureオプションは適宜…)
% ./configure --prefix=/usr/local/lib/php --with-apxs2=/usr/bin/apxs2 --enable-pcntl --enable-mbstring --enable-mbregex --enable-zend-multibyte --with-mysql --with-pear=/usr/local/lib/php
% make
% make install

ここで、make install でエラー

apxs:Error: Activation failed for custom /etc/apache2/httpd.conf file..
apxs:Error: At least one `LoadModule' directive already has to exist..
make: *** [install-sapi] エラー 1

このような事を言われるので、

vi /etc/apache2/httpd.conf

で、中身は空の状態なので、

#dummy
LoadModule hoge hoge.so

等とダミーのLoadModule情報を書いておく。

make install 成功後、再度httpd.confを開き、ダミーを削除もしくはコメントアウトしておく。

apacheをリスタート
% /etc/init.d/apache2 restart

ここまでうまく行ったら、 /var/www/ 配下にphpinfo()を書いてブラウザよりアクセス。
PHP Version 5.3.0 と表示されていればOK

追記:困った事

何度かconfigureオプションを変更して、makeを繰り返してたら、make installした後のapache restartで以下のようにコケた。

 * Restarting web server apache2
apache2: Syntax error on line 185 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/php5.load: Cannot load /usr/local/lib/php-5.3.0/libs/libphp5.so into server: /usr/local/lib/php-5.3.0/libs/libphp5.so: undefined symbol: zend_parse_parameters

困ってしまって相談。id:ykw氏に手助けして頂いた(ykw++)。
どうやら、こういう事らしい。
2008-11-06

初歩的な事なんだろうけど、makeした後に再度コンパイルしなおす時は、

% make distclean

しないとおかしな事になる、という覚書。