はじめに
こんにちは。
今回は、私が遭遇したapacheが動かなくなってしまった際の1つの原因について解説します。
apachectl start してみるも
httpd: Syntax error on line 191 of
/usr/local/apache2/conf/httpd.conf:
Cannot load modules/libphp.so into server:
dlopen(/usr/local/apache2/modules/libphp.so, 0x000A):
Library not loaded: /usr/local/opt/libsodium/lib/libsodium.23.dylib\n
Referenced from: <英数字の羅列>
/usr/local/apache2/modules/libphp.so\n
Reason: tried: '/usr/local/apache2/lib/libsodium.23.dylib' (no such file),
'/usr/local/opt/libsodium/lib/libsodium.23.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/opt/libsodium/lib/libsodium.23.dylib' (no such file),
'/usr/local/opt/libsodium/lib/libsodium.23.dylib' (no such file),
'/usr/local/lib/libsodium.23.dylib' (no such file),
'/usr/lib/libsodium.23.dylib' (no such file, not in dyld cache),
'/usr/local/apache2/lib/libsodium.23.dylib' (no such file),
'/usr/local/Cellar/libsodium/1.0.19/lib/libsodium.23.dylib' (no such file),
'/System/Volumes/Preboot/Cryptexes/OS/usr/local/Cellar/libsodium/1.0.19/lib/libsodium.23.dylib' (no such file),
'/usr/local/Cellar/libsodium/1.0.19/lib/libsodium.23.dylib' (no such file), '/usr/local/lib/libsodium.23.dylib' (no such file),
'/usr/lib/libsodium.23.dylib' (no such file, not in dyld cache)
libphp.soを確認。バージョンは?
phpのバージョンが8のとき、libphp.soという名前になるらしいのですが、
私の場合は、phpのバージョンが上がったことで、"libsodium.23.dylib"というファイルが読み込めなくなったことが原因だったようでした。
検索で以下のようにしたところ、libsodium.26.dylibが引っかかりましたので、phpのバージョンがアップしたことで、読み込むlibsodiumのバージョンが変わってしまったようです。
// /usr/local.libフォルダで
$ find . -name "*libsodium*"
./libsodium.26.dylib
./pkgconfig/libsodium.pc
./libsodium.dylib
./libsodium.a
apacheに読み込むphpのバージョンやlibsodiumのバージョンをダウングレードすることも考えましたが、まずはアップグレードをしてみようと思い、libsodium.26.dylibを読み込むようにしてみました。
検索で以下のようにすると、libphp.soの場所がわかるので、それをapacheのフォルダにコピーしました。
$ sudo find / -name "libphp.so"
/usr/local/apache2/modules/libphp.so
/usr/local/lib/httpd/modules/libphp.so
/usr/local/Cellar/php/8.3.2/lib/httpd/modules/libphp.so
^C
1つ目が現在使っているlibphp.so、
2つ目がmacOSに付いてきたlibphp.so(だったはず)、
3つ目がバージョンアップのときに付いてきたlibphp.soです。
以下のようにしてコピーします。
$ sudo cp /usr/local/Cellar/php/8.3.2/lib/httpd/modules/libphp.so /usr/local/apache2/modules/libphp.so
私の場合は、これでapacheが動くようになりました!
終わりに
バージョンアップの際にサーバーやプログラムが動かなくなることはよくあることですが、
避けるか、乗り越えるかしていきましょう!