MacOS14.3でphpを動かす方法

MacOS14.3でphpを動かす方法を解説します

Apacheの確認

apacheが入っていることを確認します

$ which httpd
/usr/sbin/httpd
$ which apachectl
/usr/sbin/apachectl

apacheとなるhttpdとapacheを起動・停止するためのapachectlが見つかればOKです
みつからない場合はインストールしましょう

PHPのインストール

Homebrewでphpをインストールします

$ brew install php

phpがインストールされたか確認しましょう

$  php -v
PHP 8.3.2 (cli) (built: Jan 16 2024 13:46:41) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.2, Copyright (c) Zend Technologies
    with Zend OPcache v8.3.2, Copyright (c), by Zend Technologies

phpがインストールされたことを確認しました

Apacheにphpを適応する

このままではphpinfoを表示できません
apacheにphpを適応するためhttpd.confを編集しましょう

$ vim /etc/apache2/httpd.conf
LoadModule php_module /opt/homebrew/opt/php@8.3/lib/httpd/modules/libphp.so
<IfModule php_module>
  AddType application/x-httpd-php .php
</IfModule>

今回はphp8なのでphp_moduleとして適応します

/opt/homebrew/opt/php@8.3/lib/httpd/modules/libphp.so

libphp.soまでのpathはphpをインストールした方法によって異なるようなので各自でしらべてください
homebrewでインストールした場合は上記のpathでした

httpd.confの編集が完了したらapacheを再起動させれば完了です

$ sudo apachectl restart   

おつかれさまでした

No code signingエラーがでる場合

httpd.confの編集をしapacheを再起動させると以下のエラーが出る場合

No code signing authority for module at /opt/homebrew/opt/php/lib/httpd/modules/libphp.so specified in LoadModule directive.

libphp.soに署名をする必要があります

キーチェーンアクセスを使用して証明書を作成します

キーチェーンアクセス > 署名書アシスタント > 認証局を作成

名前:任意
ユーザー証明:コード署名
メール:ご自身の

証明書ができたらダブルクリックで開くと証明書の設定ができます
SSL:常に信頼
に変更してください

次にlibphp.soを作成した証明書で署名します

codesign --sign "PHP CA" --force --keychain ~/Library/Keychains/login.keychain-db /opt/homebrew/opt/php@8.3/lib/httpd/modules/libphp.so

さらにhttpd.confを再度修正します

修正前

LoadModule php_module /opt/homebrew/opt/php@8.3/lib/httpd/modules/libphp.so

修正後

LoadModule php_module /opt/homebrew/opt/php@8.3/lib/httpd/modules/libphp.so "PHP CA"

あとはapacheを再起動するだけです

$ sudo apachectl restart   

うまく再起動ができphpinfoが表示できれば完了です

Could not reliably determine the server's fully qualified domain nameエラーが出る場合

以下のエラーが出た場合

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using CnMBA.local. Set the 'ServerName' directive globally to suppress this message

httpd.confのServerNameを編集する必要があります

修正前

#ServerName www.example.com:80

修正後

#ServerName www.example.com:80
ServerName localhost:80

あとはapacheを再起動して適応するだけです
http://localhost:80
最後にlocalhostを開いて確認しましょう

参考サイト

phpのインストール
https://www.stub-create.com/blog/php/mamp-brew.html

apacheの設定
https://weblabo.oscasierra.net/apache-macos-usage/
https://tangerine.hateblo.jp/entry/2021/10/26/161116
https://qiita.com/naoyago/items/9b0a0b42e53747392dd3

コード署名
https://pointsandlines.jp/server-side/php/code-signing-in-macos-monterey
https://www.simplified.guide/macos/apache-php-homebrew-codesign