猫でもわかるWeb開発・プログラミング

本業エンジニアリングマネージャー。副業Webエンジニア。Web開発のヒントや、副業、日常生活のことを書きます。

MacのApache 2.4が動かない問題

MacApache 2.4が動かない

http://localhost しても 「localhost のサーバーへの接続を確立できませんでした」 状態になるようになった。

ps aux | grep apacheps aux | grep httpd しても何もプロセスが動いていない。

sudo apachectl start しても /System/Library/LaunchDaemons/org.apache.httpd.plist: Operation already in progress と言われる。

$ apachectl configtest
httpd: Syntax error on line 177 of /private/etc/apache2/httpd.conf: Cannot load local/Cellar/php56/5.6.11_2/libexec/apache2/libphp5.so into server: dlopen(/usr/local/Cellar/php56/5.6.11_2/libexec/apache2/libphp5.so, 10): Library not loaded: /usr/local/lib/libjpeg.8.dylib\n  Referenced from: /usr/local/Cellar/php56/5.6.11_2/libexec/apache2/libphp5.so\n  Reason: image not found

おそらく brew update した関係で apache とか php のバージョンが上がり、なんか動かなくなっているようだ。

環境

  • Max OS X Yosemite 10.10.3
  • Apache 2.4.10
  • php 5.6.11_2 (がApacheからは参照されているっぽい)

とりあえず無いと言われているやつを入れてみる

/usr/local/lib/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/lib/

そしてもう一回ためす。

$ apachectl configtest
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using ysakamoto.local. Set the 'ServerName' directive globally to suppress this message
Syntax OK

なんか出ているけど一応 Syntax OK が出るようになった。 そのまま apachectl start してみたけどダメだったが、一回stopしてからstartすると成功した。*1

$ sudo apachectl stop
$ sudo apachectl start

まとめ

  • brew update したらなぜかApacheが動かなくなったが、ライブラリを入れたら動いた
  • libjpeg 以外のエラーが出るパターンもあるっぽいので、とりあえず対応するライブラリを入れてみるといいかもしれない
  • 今回のエラーとはまた別問題なのかもしれないが、似たようなエラーとして https://github.com/Homebrew/homebrew-php/issues/3074 とか https://github.com/Homebrew/homebrew-php/issues/3073 みたいなissueがあるので、読んでみると参考になるかもしれない。*2

*1:もしかしたらそもそもstopとかstartとか必要なかったのかもしれない

*2:今回の僕の事案はこれではなかったようだ