環境
今回、設定を行った環境は、以下の通りです。
http://tech-wiki.pomme-verte.net/?p=5
http://tech-wiki.pomme-verte.net/?p=350
環境確認
PHP をコンパイルする際に「--with-apxs2=/usr/local/apache2/bin/apxs」などと付けておくと、httpd で使うPHPモジュールが 「(prefix)/modules」ディレクトリに配置されます。
実際に確認してみました。
[bash]
ls -l /usr/local/apache2/modules/ | grep php
-rwxr-xr-x 1 root root 41637384 Dec 25 08:28 libphp7.so [/bash]
libphp7.so というファイルがありました。
httpd.confの設定
モジュールが存在していることを確認したら、httpd.confにPHPの動作に必要な設定を追加します。
設定内容
モジュールの読み込み
まずは、libphp7.soを読み込ませる設定です。 以下のような記述となります。
[bash] LoadModule php7_module modules/libphp7.so [/bash]
私の場合、この設定はすでにhttpd.confに書かれていました。 PHPインストール時に追加されたのだと思います。
ファイルタイプの追加
.phpファイルのファイルタイプも追加します。 以下のような感じです。
[bash] <FilesMatch .php$> SetHandler application/x-httpd-php </FilesMatch> [/bash]
設定ファイル
設定ファイルの書き方は自由に書いて問題ないと思いますが、今回はPHP用の設定ファイルをextraディレクトリに配置して、httpd.conf に Includeする形にしました。
httpd-php.confの作成
PHP用の設定だけを記載した設定ファイルを作成します。
[bash]
cd /usr/local/apache2/conf/extra
vi httpd-php.conf
~~~設定ファイルの内容~~~ LoadModule php7_module modules/libphp7.so
<FilesMatch .php$> SetHandler application/x-httpd-php </FilesMatch>
<IfModule php7_module> PHPINIDir /usr/local/php/lib </IfModule> ~~~ここまで~~~
(保存してviを終了) [/bash]
httpd.confへInclude
作成したhttpd-php.confファイルを、httpd.confへIncludeします。
[bash]
cd /usr/local/apache2/conf
vi httpd.conf
~~~httpd.confの末尾に以下を追加~~~
PHP settings
Include conf/extra/httpd-php.conf ~~~ここまで~~~
(保存してviを終了) [/bash]
httpdの再起動
設定が完了したら、httpdを再起動して設定を読み込ませましょう。
[bash]
/usr/local/apache2/bin/apachectl configtest
Syntax OK
systemctl restart httpd
ps -ef | grep httpd | grep -v httpd
root 12988 1 2 10:21 ? 00:00:00 /usr/local/apache2/bin/httpd apache 12989 12988 0 10:21 ? 00:00:00 /usr/local/apache2/bin/httpd apache 12990 12988 0 10:21 ? 00:00:00 /usr/local/apache2/bin/httpd apache 12991 12988 0 10:21 ? 00:00:00 /usr/local/apache2/bin/httpd apache 12992 12988 0 10:21 ? 00:00:00 /usr/local/apache2/bin/httpd apache 12993 12988 0 10:21 ? 00:00:00 /usr/local/apache2/bin/httpd [/bash]
動作確認
設定を読み込ませたら、PHPが動作するか確認してみましょう。
httpdのドキュメントルートに以下の内容が書かれたファイルを配置します。
[bash] <?php phpinfo(); ?> [/bash]
こんな感じで作成するといいかと思います。
[bash] echo "<?php phpinfo(); ?>" > /usr/local/apache2/htdocs/phpinfo.php [/bash]