LoginSignup
0
0

More than 5 years have passed since last update.

OSXで突然Apacheが起動しなくなった時

Last updated at Posted at 2016-09-01

ある朝、いつも通りMacbookを起動したのですが、ローカルPCのApache(localhost:80)につながりません。
いろいろなWebアプリをインストールして、ローカルで作業しているので、致命的に困った事態発生です。
そういえば、寝る前に・・・何かのアップデートがあったような気がするのですが・・・。寝ぼけていて覚えていません。
そのため、原因なのか分かりません。

というわけで、原因を調査していきましょう。その様子をここにメモします。たぶん、他の方もそんな状態になることがあるかもしれません。

Apacheを再起動

大抵は、再起動すると直ります。

$ sudo apachectl restart

問題があれば、ここでエラーが表示されるはずなのですが・・・しかし、今回エラーも何も表示されません。

エラーログを確認しよう

大抵の問題は、エラーログに何かしらのメッセージが記録されます。

以下のパスにどこかにある、エラーログを確認してみましょう。

/var/log/apache2/error_log
/private/var/log/apache2/error_log
/var/log/httpd/error_log

今回私の症状ですが、なんと、エラーログにも何も記録されていません。昨夜に寝る前にアプリをデバッグした痕跡は残っているのですが、今朝、この瞬間のログは何も記録されていませんでした。

ポートが占有されてないか確認

それでは、本腰入れてトラブルシューティングしようと思いました。

まず、試したのは、ポートスキャンして、他にポート80を占有しているアプリがないかを確認することからです。以下のアプリで、Portscanのタブを開いて、localhostのポート80番を調べます。

OS X:ネットワークユーティリティについて
https://support.apple.com/ja-jp/HT202790

あるいは、男らしくコマンドを打って確認しましょう。

$ sudo lsof -i -P | grep "LISTEN"

そういえば、何かアプリをインストールした気がする・・・と思ったら、そのアプリがポート80番を占有していないでしょうか。

私の今回の症状では、ポート80番には何も表示されません。

設定ファイルが壊れていないか確認

希に、インストールしたアプリが、勝手に、Apacheの設定ファイルを書き換えることがあります。そこで、設定ファイルが正しいかどうか調べましょう。

$ apachectl configtest

と、ここでエラーが出ました。

Syntax error on line 170 of /private/etc/apache2/httpd.conf: Cannot load /usr/local/opt/php56/libexec/apache2/libphp5.so into server: dlopen(/usr/local/opt/php56/libexec/apache2/libphp5.so, 10): Symbol not found: _ldap_control_find\n  Referenced from: /usr/local/opt/php56/libexec/apache2/libphp5.so\n  Expected in: /System/Library/Frameworks/LDAP.framework/Versions/A/LDAP\n in /usr/local/opt/php56/libexec/apache2/libphp5.so

どうやら、PHPのApacheモジュールの読み込みで死んでいるようです。ここまで分かれば何とかなりそうです。

エラーメッセージでググってみると・・・

ありました。全く同じエラーメッセージが出ています。

どうやら、ApacheとPHPの相性の問題です。そういえば、先日、brew updateをかけた気がする・・・

このスレッドに解決策も書かれていました。

$ brew uninstall php56
$ brew cleanup
$ brew install php56

ただ、これをやっても解決しません。。。それで、さらいスレッドの下の方を読んでいくと、やはりこれでも解決できないという書き込みがあり、以下のようにした直ったという話がありました。

brew uninstall php56
brew cleanup
brew update
brew install php56 --without-ldap

なるほど、LDAP関係のエラーなので、LDAPをオプションから外してコンパイルするのでしょう。

試してみると、無事解決しました。

最初、エラーを見つけたときに、Homebrewのphp56が問題だと思ったので、最新のphp71を試したのですが、それでも直らなかったので、どうしようかと思っていたのですが、なんとかなって良かったです。

結論

ある日、突然、Apacheが動かなくなることもありますが、一つずつ、落ち着いて対処していけばなんとかなるようです。

Apacheが動かなかったので、とりあえず、PHPの簡易サーバーを使ったのですが、ちょっとしたWebアプリをテストするにはそれでも十分ですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0