MAMPを削除して、macにプリインストールされているApacheを使う。PHPも8.2を入れる
今まではMAMPを使っていたが、それでは勉強にならないので、MacにプリインストールされているApacheを使うことにした。
ついでに、PHPも8.2をインストールする。
MAMPのアンインストール
MAMPのアンインストールは、アプリケーションフォルダのMAMPのアイコンをゴミ箱に入れるだけ。
PHPのインストール
次にPHPをインストールした。
$ brew update
$ brew install php
最後に以下のようにメッセージが出力された。
To enable PHP in Apache add the following to httpd.conf and restart Apache:
LoadModule php_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
Finally, check DirectoryIndex includes index.php
DirectoryIndex index.php index.html
The php.ini and php-fpm.ini file can be found in:
/opt/homebrew/etc/php/8.2/
To start php now and restart at login:
brew services start php
Or, if you don't want/need a background service you can just run:
/opt/homebrew/opt/php/sbin/php-fpm --nodaemonize
このメッセージのとおりにする。
httpd.confの修正
$ cd /etc/apache2
$ sudo cp httpd.conf httpd.conf_org
$ sudo vi httpd.conf
この行を追加。
LoadModule php_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so
この行を追加。
SetHandler application/x-httpd-php
具体的には、以下のように記述した。
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
以下のように修正。
DirectoryIndex index.php index.html
具体的には、以下のように修正した。
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
php.ini の修正
$ sudo vi /opt/homebrew/etc/php/8.2/php.ini
memory_limit = 1024M
post_max_size = 512M
upload_max_filesize = 512M
date.timezone = Asia/Tokyo
php をサービスに登録
$ brew services start php
==> Successfully started 'php' (label: homebrew.mxcl.php)
すると、macが以下のようなメッセージを出した。
バックグラウンド項目が追加されました。
"php-fpm"はバックグラウンドで実行できる項目です。
これは"ログイン項目"設定で管理できます。
ここで php -v とすると、以下のようなエラーが出た。
dyld[10741]: Library not loaded: /opt/homebrew/opt/libavif/lib/libavif.15.dylib
Referenced from: <87C1A268-34E4-396F-8BBC-D5591064E333> /opt/homebrew/Cellar/gd/2.3.3_5/lib/libgd.3.dylib
以下のサイトを参考にした。
How to install PHP 8.3 on MacOS
次のように書かれていた。
To fix this issue, you need to install or reinstall GD
$ brew install gd
# or if you have already gd installed, run
$ brew reinstall gd
ということなので、以下を実行。
$ brew install gd
そののち、以下を実行。うまくいった。
$php -v
PHP 8.2.10 (cli) (built: Aug 31 2023 18:52:55) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.10, Copyright (c) Zend Technologies
コード署名を実行
この状態で次を実行すると、以下のようなエラーメッセージが出た。
% apachectl configtest
[Mon Sep 18 17:25:15.781306 2023] [so:error] [pid 11627] AH06665: No code signing authority for module at /opt/homebrew/opt/php/lib/httpd/modules/libphp.so specified in LoadModule directive.
httpd: Syntax error on line 189 of /private/etc/apache2/httpd.conf: Code signing absent - not loading module at: /opt/homebrew/opt/php/lib/httpd/modules/libphp.so
Code signing absent とは “コード署名がありません” ということ。
キーチェーンアクセスを起動する。
すでに認証局を作成していたが、期限切れなので、削除。
そののち、”認証局を作成”を実行。

名称: Seiichi_Nukayama_CA
ユーザ証明書: “コード署名” を選択。
“作成”をクリック。


証明書ができので、以下のコマンドを実行。
% codesign --sign "Seiichi_Nukayama_CA" --force --keychain \
~/Library/Keychains/login.keychain-db \
/opt/homebrew/opt/php/lib/httpd/modules/libphp.so
"codesignがキーチェーンに含まれるキー'Seiichi_Nukayama_CA' を
使用して署名しようとしています"
という表示が出て、パスワードを求められるので、入力。

httpd.confを修正
そして、httpd.confを修正する。
$ sudo vi /etc/apache2/httpd.conf
LoadModule php_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so "Seiichi_Nukayama_CA"
$ apachectl configtest
Syntax OK
OKとなったので、いよいよapacheを再起動する。
$ sudo apachectl restart
http://localhost/ とアクセスが成功した。
カテゴリー: Apache, MacOS, memo, php
タグ: libphp.so, libphp.soに署名する, キーチェーン, コード署名, 自己証明書
カウント: 193