PHPをビルドしてApacheと連携させる方法
PHPをビルドしてApacheと連携させる方法を紹介します。
1.はじめに
ブラウザからPHPファイルを読み込ませたいため、Linux(CentOS)のApache2.4にPHP5.xを組み込んでみました(Apacheはインストール済)。
# yum install php
インストール後、httpd.confに下記の2行を追記。
LoadModule php5_module /usr/lib64/httpd/modules/libphp5.so
:
AddType application/x-httpd-php .php
が、Apacheを再起動したところ、下記のエラーが発生しました。
# cd /usr/local/apache2/bin
# ./apachectl restart
httpd: Syntax error on line 150 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/lib64/httpd/modules/libphp5.so into server: /usr/lib64/httpd/modules/libphp5.so: undefined symbol: unixd_config
追加したLoadModuleディレクティブでひっかかっているようです。
ネットで調べたところ、yumでインストールしたApache2.4とPHP5ではうまく連携できないようです。
Apache2.2に戻せば連携できるようですが、PHPをソースからビルドすれば連携させられることがわかったので、その方法で実施しました。
2.PHPをビルドしてApacheと連携させる
連携させるための仕組みをもう少し説明すると、PHPを手動でインストールする際、Apacheと連携させるためのモジュールlibphp5.soを、Apache2.4にバンドルされているapxsというものを利用して生成します。
yumでインストールしたPHPに含まれていたlibphp5.soは、Apache2.2対応のものだったのかもしれません。
yumでインストールしたPHPを削除
# yum remove php
yumでlibxml2とlibxml2-develをインストール。
# yum install -y libxml2 libxml2-devel
PHP5.x系の最終バージョンをダウンロード
wget http://jp2.php.net/get/php-5.6.40.tar.gz/from/this/mirror -O php-5.6.40.tar.gz
スタンドアローン環境の場合は、https://www.php.net/releases/からphp-5.6.40.tar.gzをダウンロードして、Linuxマシンに転送します。
tar.gzを展開します。
# tar xzf php-5.6.40.tar.gz
展開したディレクトリに移動。
# cd php-5.6.40
Apacheと連携させるためのlibphp5.soを作るために、./configure実行時にapxsを指定します。
# ./configure --with-apxs2=/usr/local/apache2/bin/apxs
これでhttpd.confに
LoadModule php5_module modules/libphp5.so
がビルド時に自動的に設定されます。
後は通常通りのビルドを実施します。
# make
# make test
# make install
ビルド後はApacheを再起動します。
# cd /usr/local/apache2/bin
# ./apachctl restart
/usr/local/apache2/htdocs配下に
<?php phpinfo(); ?>
の内容をindex.phpで作成し、ブラウザでアクセスしてPHPの情報が表示されればOKです。
3.参考
参考サイトは下記です。ありがとうございました。
- apache(2.4)起動せず。libphp5.so undefined symbol: unixd_config
- php 5.x + apache httpd 2.4.x を make する
- phpを正常に動作させたい。
- PHP + Apacheのインストール
- [Apache2.4] yum経由でApache2.4 をインストールしてPHP5.6を動かすまで
- PHP-FPMのインストールと設定
- apxsでapacheにモジュールを追加する
- ApacheのCGIでソースが表示される場合の対処
- Apache 2.4 系をソースからインストール
- 「php_flag short_open_tag off」の意味
- mod_rewriteの動作を確認する方法
- WindowsにApacheを簡単にインストールする方法
- Windows+ApacheでSSLを有効にする方法
- Apacheログのリクエスト時間にミリ秒・マイクロ秒を表示する
- Windows + XAMPP + OpenSSL
- PHP における「モジュール版」と「CGI 版」の比較 + WordPress の適用例
- Apache のチューニング(その3)・DiceによるWindows再起動
- Apache のチューニング(その2)
- Apache のチューニング(その1)