homebrewでインストールしたPHPのApacheモジュールをMac標準のApacheで使用するために以下のように記述したとします。
LoadModule php7_module /usr/local/opt/php@7.1/lib/httpd/modules/libphp7.so
そして再起動すると以下のエラーが発生して失敗します。
httpd: Syntax error on line 179 of /private/etc/apache2/httpd.conf: Cannot load /usr/local/opt/php@7.1/lib/httpd/modules/libphp7.so into server: dlopen(/usr/local/opt/php@7.1/lib/httpd/modules/libphp7.so, 10): no suitable image found. Did find:\n\t/usr/local/opt/php@7.1/lib/httpd/modules/libphp7.so: code signature in (/usr/local/opt/php@7.1/lib/httpd/modules/libphp7.so) not valid for use in process using Library Validation: mapped file has no cdhash, completely unsigned? Code has to be at least ad-hoc signed.\n\t/usr/local/opt/php@7.1/lib/httpd/modules/libphp7.so: stat() failed with errno=22
エラーメッセージが長いですが、要は libphp7.so のロードに失敗していて、その理由は署名されていないからということです。codesign コマンドで確認すると確かに署名されていません。
$ codesign -vd /usr/local/opt/php@7.1/lib/httpd/modules/libphp7.so
/usr/local/opt/php@7.1/lib/httpd/modules/libphp7.so: code object is not signed at all
なぜエラーになるかというと、以下のように /usr/sbin/httpd が署名されるようになり、それによってロードされる .so も署名されている必要が出てきたということのようです。署名していない .so がロードできたら署名しているコードと全く関係ないコードが実行し放題になってしまうので、そういうことはできないということなのでしょう。おそらくHigh Sierra以降で署名されるようになったようです。
$ codesign -vd /usr/sbin/httpd
Executable=/usr/sbin/httpd
Identifier=com.apple.apache.httpd
Format=Mach-O thin (x86_64)
CodeDirectory v=20100 size=6599 flags=0x0(none) hashes=202+2 location=embedded
Platform identifier=5
Signature size=4485
Info.plist entries=6
TeamIdentifier=not set
Sealed Resources=none
Internal requirements count=1 size=72
ということで標準のApacheではhomebrewでインストールしたPHPモジュールは使用できません。解決方法としては署名されていないApacheをインストールしてそちらを使うということになります。幸いhomebrewでApacheもインストールできるので、以下のようにしてhomebrewのApacheを使用できるようにすることができます。
# homebrewでApacheをインストールする
brew install httpd
# 標準でインストールされているApacheを停止する
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
# homebrewの方のApacheを起動する
brew services restart httpd