#はじめに
MAMPを使っていて、サーバをスタートさせた際、突如として現れるエラー。それは......
「Apache couldn't be started. Please check your MAMP installation and configuration.」
今回は、このエラーが出た際、MAMPを再インストールしても解消されないときに考えらる原因と、その対処法を紹介します。なお、今回紹介する対処を行う前に、以下のサイトで紹介されている対処を行ってください。(httpd.confの文法確認など)
MAMP エラー Apache が起動しない / Web Design Leaves
[MAMPのApacheが接続されない問題]
(https://qiita.com/yurippine/items/f3465af4ae24053ca8ee)
ちなみに、二つ目の方の場合、今回紹介する方法で解消できたのでは、と思っていたり......。
できればMAMPを再インストールする前にこれを試して欲しいですね。まあ私の場合は再インストールしてもだめで、どうしたら、、と足掻いた末にたどりついたので、なんとも。
みなさんが同じように苦しまないことを願うばかりです。
#原因の模索
ここではローカル環境での開発をしているとして話を進めていきます。別にローカル環境ではなくても関係はありません。
さて、一体何が原因でこのようなエラーが出てしまっていたのでしょう。再インストールしてもエラーが解消されないとなると、MAMPにはないということが考えられます。ではいったいどこに!
いろいろ調べていくと、あることに気がつきました。以下に例を示します。
まず、Apacheのポートを80に設定します。次に http://localhost に接続します。この時に、サーバーをリスタートさせるのを忘れずに!
この時「Apache couldn't be started. Please check your MAMP installation and configuration.」が出ると思いますが、とりあえず無視。ちなみにこれは http://localhost:80 と同義です。すなわちポート80にアクセスしています。
さて、結果は...ん?
「It works!」と出ました。Apacheサーバは動いているようです。しかしエラーが出る。なぜ.....
次に、適当にApacheのポートを8000に設定してみます。そして、 http://localhost:8000 に接続!この時:8000を忘れずに!また、サーバをリスタートさせましょう。
なんと普通に接続できてしまいました!しかもエラーも出ません!なるほど、ということはポートに問題があったわけですね。
#ポート80を調べる
ポート80では上手くいかず、ポート8000ではうまくいきました。ということでポート80を調べたいと思います。コマンドプロントを開いて、以下のコマンドで調べます。パスワードを聞かれる場合は、ご自分のパソコンのパスワードを入力してください。
$ sudo lsof -i:80
さて、結果が表示されました。LISTENとなっているものがポート80を使っているプロセスです。
そして、その中にhttpdという項目がありませんか?もしあったらそれが今回のエラーの正体です。ないという方も焦らずに!他の項目に原因があるかもしれません。それについては その他の対処法 で。
一体これはなんなのでしょうか?実は、これはMacの標準インストールされているApacheなんです!これが邪魔してMAMPのApacheの起動を邪魔していたんですね。というわけで、こいつの息の根を止めにいきましょう!
#対処法
方法は簡単です。Macに標準インストールされているApacheを操作するためのapachectlというコントローラを使用します。以下のコマンドを入力します。
$ sudo apachectl stop
そうしたら、MAMPのポートを80に戻してください。サーバをリスタートさせて http://localhost に接続してみましょう!
正しく表示されましたか?表示された方は以上で終了です。お疲れ様でした。まだダメだ!という方は、以下も参考にしてみてください。
#その他の対処法
ポート80のみが使えない場合に考えられることとして、他に挙げられるのはSkypeの利用です。Skypeはポート80を利用するので、その設定を変えてやればOKです。詳しくは他サイトを参照してください。また、その他プロセスが邪魔をしてApacheが起動できないという場合がありますので、先程のポートを調べるコマンドを使ってそれぞれ使っているアプリケーション等を調べてみてください。そして、次のコマンドを入力するといいでしょう。
$ kill PID
PIDには終了させたいプロセスのPIDを指定してください。
それでもダメであれば、潔く諦めて http://localhost:ポート番号 を使いましょう......!
#最後に
いかがだったでしょうか。今回は、MAMPのエラーとその対処法について、ポート競合という点に着目して解説してみました。
今回紹介した対処法は限定的だったので、あまり参考にならなかった方もいるかと思います。そもそもここまでたどり着くということは、エラーが発生してからそれなりの時間が経ってしまっているのではないでしょうか。あくまでこれは数多の対処法の中の一つとしてとっていただければ幸いです。