Mac mini に標準インストールされているApacheでPHPを使う手順を紹介する。
筆者の環境では、Apache httpd.confに”PHPが deprecated(非推奨)”と記述されている。これに対する解の一つとして、brewでPHPとApache 双方をインストールする方法があるが、ここでは、標準インストールされたApacheを使う方法を紹介する。
筆者のマシン | |
---|---|
Mac | mac mini (M1, 2020) |
OS | Sequoia バージョン 15.4.1 |
Apache httpd | バージョン 2.4.62 |
Homebrew | バージョン 4.4.20 |
ここでは次の手順で説明する。
- はじめに
- brewでPHPをインストール
- PHPモジュールを署名する
- Apacheのhttpd.confを更新、再起動
- ApacheでPHPコードが動くことの確認
- おまけ:Unable to find code signature authorityエラー対応
- おまけ:Could not reliably determine the server’s fully qualified domain nameメッセージ対応
1. はじめに
PHPコードを用いてWebページを制作する場合、Apache と PHP を連携させれば良い。
しかし筆者の環境では、標準インストールされているApache の httpd.conf の記述に以下があり、PHPが非推奨となっている。
そこで以下サイトを参考にさせて頂き、brewでPHPをインストールした上で、標準インストールされているApacheでPHPを使用することにした。
・Apacheでphpモジュールがロードできない(macOS/Monterey)
・Add PHP to Apache on MacOS 12
2. brewでPHPをインストール
- PHPが未インストールかどうかを確認する
% brew list
- 筆者の環境では、PHPは未インストールであった
- PHPをインストールする。今回はバージョン指定はせずに進めた
% brew install php
- 後で必要となる情報を確認しておく(以下赤字の部分)
% brew info php ==> **php**: stable 8.4.6 (bottled), HEAD ・・・(省略) To enable PHP in Apache add the following to httpd.conf and restart Apache: LoadModule php_module /usr/local/opt/php/lib/httpd/modules/libphp.so
- PHPをスタートする
% brew services start php ==> **Successfully started `php` (label: homebrew.mxcl.php)**
3. PHPモジュールを署名する
brewでインストールしたPHPは署名されていないため、署名する。
- 認証局を作成する
- キーチェーンアクセスアプリを起動し、メニューの「キーチェーンアクセス」から「認証局アシスタント」>「認証局を作成…」を選択する
- 以下のような情報を記入・指定し作成する
名前 hogeCA (自分で名前を付ける。あとで httpd.conf に記述するため英字を推奨する) 固有名のタイプ 自己署名ルートCA ユーザ証明書 コード署名 メールの送信先 自分のメールアドレス
- キーチェーンアクセスアプリを起動し、メニューの「キーチェーンアクセス」から「認証局アシスタント」>「認証局を作成…」を選択する
- 証明書を信頼する
- 「ログイン」項目で「自分の証明書」を参照すると、先ほど作成したCAがあり、赤字で「このルート証明書は信頼されていません」とある
- 証明書をダブルクリックして表示し、「信頼」項目にある「この証明書を使用するとき」の値を「常に信頼」へ変更する
- 作成した証明書は、/Users/me/Library/Keychains/login.keychain-dbにある
- 「ログイン」項目で「自分の証明書」を参照すると、先ほど作成したCAがあり、赤字で「このルート証明書は信頼されていません」とある
- PHPモジュールを署名する
- 先ほどbrewでインストールしたPHPモジュールの場所は、上記% brew info phpで確認した結果の赤字部分となる(筆者の環境では/usr/local/opt/php/lib/httpd/modules/libphp.so)
- この libphp.so を署名する
% codesign --sign "hogeCA" --force --keychain /Users/me/Library/Keychains/login.keychain-db /usr/local/opt/php/lib/httpd/modules/libphp.so
4. Apacheのhttpd.confを更新、再起動
- 標準インストールされたApacheのhttpd.confに、brewでインストールしたphpモジュールをincludeする記述を追加
- /etc/apache2/httpd.conf に以下を追記
LoadModule php_module /usr/local/opt/php/lib/httpd/modules/libphp.so "hogeCA” <IfModule php_module> AddType application/x-httpd-php .php </IfModule>
- /etc/apache2/httpd.conf に以下を追記
- configtestで記述が正しいかチェックする
% sudo apachectl configtest
- Syntax OKと表示されれば問題ない
- Apacheを再起動
% sudo apachectl -k restart
5. ApacheでPHPコードが動くことの確認
以下のように簡単なPHPコードを準備する。ここでは、ドキュメントルートは/Library/WebServer/Documentsである。
% pwd
/Library/WebServer/Documents
% cat phptest.php
<html>
<head></head>
<body>
<?php
echo 'This is php code.';
?>
</body>
</html>
ブラウザでhttp://localhost/phptest.phpへアクセスし「This is php code.」が表示されればOKである。
これでPHPによるWebページ制作ができるようになった。
6. おまけ:Unable to find code signature authorityエラー対応
% apachectl configtestコマンドにおいて、以下エラーが発生した時の対応をご紹介する。
httpd.conf の編集で、authority name「”hogeCA”」をコピペしたのだが、右側の「”」(RIGHT DOUBLE QUOTATION MARK)が悪かったようで、編集時にキーボードより直接「“」を打ち入力したところエラーは解消した。
補足であるが、PHPモジュールに対する署名情報は以下コマンドで確認できる
% codesign -dv --verbose=4 "/usr/local/opt/php/lib/httpd/modules/libphp.so"
7. おまけ:Could not reliably determine the server’s fully qualified domain nameメッセージ対応
% apachectl configtestコマンドにおいて、以下メッセージが発生した時の対応をご紹介する。
このメッセージはこのままでも状況によっては問題はないが、気持ち悪いので解消しておく。
httpd.conf に以下記述を設定(元々 ServerName行はコメントアウトされていた)。
以上、みなさん良い1日を。