PHP5インストールでのlibphp5.soバグ対応
問題
Redhat Linux 8.0でソースコードからPHP5.0.2をインストールすると、libphp5.soが作成されないバグがあります。 これは特定の環境下で発生するようです。またバージョンが異なっても似たようなエラーが発生する場合があるようです。
私がこのトラブルを見つけたときは、日本語の情報がありませんでしたのでここに解決方法を記述しておきます。
解決方法
libphp5.soのみをはじめに作って、そのあとに自分の必要なconfigureでPHPのインストール作業を行うことで解決できます。
問題が発生した環境
以下の環境でアプリケーションはすべてソースコードからインストールした時に発生しました。
- Redhat Linux 8.0 (+ fedra legacy)
- Apache 2.0.51
- PHP 5.0.2
- lixxml2-2.6.15
インストール作業
まず以下のconfigureを行う。この場合のみlibphp5.soが作られます。これで、 libphp5.soが作成されるのでapache2.0.51とのモジュール通信が可能になります。
# ./configure --prefix=/usr/local/php5 --with-apx2=/usr/local/apache2/bin/apxs
# make
# make install
次にPHP5.0.2を展開したディレクトリにあるlibtoolコマンドを置き換えます。
# rm -rf /tmp/php-5.0.2/libtool
# cp -p /usr/local/apache2/build/libtool /tmp/php-5.0.2/libtool
必要ないものを削除します。
# make clean
# make distclean
最後に自分の用件にあったconfigureを実行して通常のインストールを行います。
# ./configure --prefix=/usr/local/php5 --with-apx2=/usr/local/apache2/bin/apxs
--enable-mbstring --enable-module=so
# make
# make install
モジュールの確認
# ls /usr/local/apache2/modules/
httpd.exp libphp5.so mod_authz_svn.so mod_dav_svn.so
libphp5.soが存在すれば問題ありません。他のモジュールは私自身の別の設定で使っているためにあるものです。
httpd.confの修正
AddType application/x-httpd-php .php
LoadModule php5_module modules/libphp5.so
#AddModule mod_php5.c
もしAddModuleがコメントアウトされていない場合は、コメントアウトしLoadModule句を追加する。
apache2.0.51の再起動と確認
# apachectl stop
# apachectl start
# ps -ef | grep apache
root 15691 1 0 01:12 ? 00:00:00 /usr/local/apache2/bin/httpd -k
nobody 15692 15691 0 01:12 ? 00:00:00 /usr/local/apache2/bin/httpd -k
nobody 15693 15691 0 01:12 ? 00:00:00 /usr/local/apache2/bin/httpd -k
nobody 15694 15691 0 01:12 ? 00:00:00 /usr/local/apache2/bin/httpd -k
nobody 15701 15691 0 01:12 ? 00:00:00 /usr/local/apache2/bin/httpd -k
nobody 15708 15691 0 01:12 ? 00:00:00 /usr/local/apache2/bin/httpd -k
nobody 15709 15691 0 01:12 ? 00:00:00 /usr/local/apache2/bin/httpd -k
root 15711 2998 0 01:12 pts/0 00:00:00 grep apache
PHPのhelloworldを記述して確認
[root@localhost htdocs]# cd /usr/local/apache2/htdocs/
[root@localhost htdocs]# pwd
/usr/local/apache2/htdocs
[root@localhost htdocs]# cat helloworld.php
<html>
<head>PHP5 helloworld</head>
<body>
<?php print("Hello PHP5 World!"); ?>
</body>
</html>
[root@localhost htdocs]# cat info.php
<?php phpinfo(); ?>
Googleのために
普段は書きませんが、PHP開発者はLAMP等でインストールされていると思うので、 日本語情報が少ないためGoogle cacheの用にキーワードを記述します。 (というかインストーラのバグは勘弁してほしいものです。)
Redhat Linux 8.0 PHP 5.0.2 install bug libphp5.so インストール module/libphp5.so apache 5.0.54 5.0.51 インストール バグ 解決方法 存在しない php
参考資料
http://www.mail-archive.com/php-install@lists.php.net/msg12900.html

