かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

Mac Apache2.4が動かなくなった

昔作ったサイトのメンテで久々にhomebrewで入れたローカル環境のApacheを起動しようとしたら次のようなエラーが出て起動できなくなっていました。

httpd: Syntax error on line 170 of /usr/local/etc/apache2/2.4/httpd.conf:
Cannot load /usr/local/opt/php56/libexec/apache2/libphp5.so into server: dlopen(/usr/local/opt/php56/libexec/apache2/libphp5.so, 10):
Library not loaded: /usr/local/lib/libjpeg.8.dylib\n
Referenced from: /usr/local/opt/php56/libexec/apache2/libphp5.so\n
Reason: image not found

libjpeg.8.dylibが無いのが原因っぽいです。
/user/local/Cellar/jpegを見に行くと9clibjpeg.9.dylibにバージョンアップされていました。(brew updateや何かのパッケージのアップデートの際に消えたのでしょうか...)

libjpeg を前のバージョンに切り替える

brew cleanupをしていなければ、古いバージョンのファイルが残っているので、次のコマンドで古いバージョンに切り替えられるようです。

$ brew switch libjpeg 8d

brew cleanupをすでにしてしまっていた場合

私は既にbrew cleanupしてしまっていたので、上記では切り替えることができませんでした。
php72 install libjpeg.8.dylib not found · Issue #4358 · Homebrew/homebrew-php · GitHub
こちらのコメントを参考に手動でlibjpeg.8.dylibをインストールしました。

$ wget -c http://www.ijg.org/files/jpegsrc.v8d.tar.gz
$ tar xzf jpegsrc.v8d.tar.gz
$ cd jpeg-8d
$ ./configure
$ make
$ cp ./.libs/libjpeg.8.dylib /usr/local/opt/jpeg/lib

このままでは、まだlibjpeg.8.dylibが読み込めないようだったので、/usr/local/lib/内にlibjpeg.8.dylibシンボリックリンクを作成しました。

$ cd /usr/local/lib/
$ ln -s ../opt/jpeg/lib/libjpeg.8.dylib libjpeg.8.dylib

これで無事Apacheが動く状態に戻せました。
ただ、/usr/local/opt/jpeg/lib/usr/local/Cellar/jpeg/9c/lib/シンボリックリンクなようでパスを見る感じだとインストールしたlibjpeg.8.dylib9cという別バージョンのフォルダに入ってしまっています。少し気持ち悪いですし、またlibjpegがアップデートされると問題が発生しそうなので、恒久的解決にはなって無さそうです...


[参考]