Sequoia で Apache + PHP

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

ここでは次の手順で説明する。

  1. はじめに
  2. brewでPHPをインストール
  3. PHPモジュールを署名する
  4. Apacheのhttpd.confを更新、再起動
  5. ApacheでPHPコードが動くことの確認
  6. おまけ:Unable to find code signature authorityエラー対応
  7. おまけ:Could not reliably determine the server’s fully qualified domain nameメッセージ対応

1. はじめに

PHPコードを用いてWebページを制作する場合、Apache と PHP を連携させれば良い。
しかし筆者の環境では、標準インストールされているApache の httpd.conf の記述に以下があり、PHPが非推奨となっている。

#PHP was deprecated in macOS 11 and removed from macOS 12

そこで以下サイトを参考にさせて頂き、brewでPHPをインストールした上で、標準インストールされているApacheでPHPを使用することにした。
Apacheでphpモジュールがロードできない(macOS/Monterey)
Add PHP to Apache on MacOS 12

2. brewでPHPをインストール

  1. PHPが未インストールかどうかを確認する
    % brew list
    • 筆者の環境では、PHPは未インストールであった
  2. PHPをインストールする。今回はバージョン指定はせずに進めた
    % brew install php
  3. 後で必要となる情報を確認しておく(以下赤字の部分)
    % 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
  4. PHPをスタートする
    % brew services start php
    ==> **Successfully started `php` (label: homebrew.mxcl.php)**

3. PHPモジュールを署名する

brewでインストールしたPHPは署名されていないため、署名する。

  1. 認証局を作成する
    • キーチェーンアクセスアプリを起動し、メニューの「キーチェーンアクセス」から「認証局アシスタント」>「認証局を作成…」を選択する
    • 以下のような情報を記入・指定し作成する
      名前 hogeCA (自分で名前を付ける。あとで httpd.conf に記述するため英字を推奨する)
      固有名のタイプ 自己署名ルートCA
      ユーザ証明書 コード署名
      メールの送信先 自分のメールアドレス

  2. 証明書を信頼する
    • 「ログイン」項目で「自分の証明書」を参照すると、先ほど作成したCAがあり、赤字で「このルート証明書は信頼されていません」とある
    • 証明書をダブルクリックして表示し、「信頼」項目にある「この証明書を使用するとき」の値を「常に信頼」へ変更する
    • 作成した証明書は、/Users/me/Library/Keychains/login.keychain-dbにある
  3. 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を更新、再起動

  1. 標準インストールされた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>
  2. configtestで記述が正しいかチェックする
    % sudo apachectl configtest
    • Syntax OKと表示されれば問題ない
  3. 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コマンドにおいて、以下エラーが発生した時の対応をご紹介する。

[Mon Apr 21 11:43:28.471998 2025] [so:error] [pid 36889] AH06663: Unable to find code signature authority on module at /usr/local/opt/php/lib/httpd/modules/libphp.so that matches authority name “hogeCA\xe2\x80\x9d” configured on LoadModule directive.

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コマンドにおいて、以下メッセージが発生した時の対応をご紹介する。

AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using hogenoMac-mini.local. Set the ‘ServerName’ directive globally to suppress this message

このメッセージはこのままでも状況によっては問題はないが、気持ち悪いので解消しておく。
httpd.conf に以下記述を設定(元々 ServerName行はコメントアウトされていた)。

ServerName localhost:80

以上、みなさん良い1日を。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする