昔作ったサイトのメンテで久々に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
を見に行くと9c
、libjpeg.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.dylib
は9c
という別バージョンのフォルダに入ってしまっています。少し気持ち悪いですし、またlibjpeg
がアップデートされると問題が発生しそうなので、恒久的解決にはなって無さそうです...
[参考]
- php72 install libjpeg.8.dylib not found · Issue #4358 · Homebrew/homebrew-php · GitHub
- dyld: Library not loaded: /usr/local/lib/libjpeg.8.dylib - homebrew php - Qiita
- MacのApache 2.4が動かない問題 - WebエンジニアのLoL日記
ゼロからはじめるLinuxサーバー構築・運用ガイド 動かしながら学ぶWebサーバーの作り方
- 作者: 中島能和
- 出版社/メーカー: 翔泳社
- 発売日: 2016/07/06
- メディア: 大型本
- この商品を含むブログを見る