MAMPを使用していたら、突然おかしくなりました(MAMPの問題はちょくちょくある)。
今回、Apacheが接続されずにだいぶ苦労してたのですが、
試せる事は全部やったので、何を実際に行ったのかプロセスを書いていきます。
ググって全部試した事、インフラ系に詳しい方に教えていただいた事をまとめてるので、
どれかが皆さんの問題を解決する答えになっていたら幸いです。
##環境
MAMP
Apache
PHP : 7.4.2
Mysql : 5.7.26
##エラー内容
Apache couldn't be started because port 80 is in use by some other software.
※注意
私のPCで使用してるMAMPは
Apacheのポート番号を80にして
httpd.cofのListenを80にして繋げています。
最初はポート80を他でも使用してるよってエラーが出ました。
この時点で、既存のファイルを変更しても通常通り動く。
けど、新規でファイルを追加すると反映されない。
↓
ローカルのURLである、http://localhost:10001/ が表示され、ファイル変更しても反映される。
↓
"80のポートを他にも使ってるやつおるで、変えてくれ〜セキュリティ的に〜"みたいな感じで新規ファイルが反映されなくなっているのか(予想)
ちなみにこの時点では、
Apache Server
MySQL Server
Cloud
どれも点滅してました。(Stop Serverは点滅してない)
調べてみて、最初に出てきた記事から進めます。
##ターミナルで同じポートで動いてるやつを消す
こちらの方の記事を参考に、同じようにターミナルからコマンドを叩いてみました。
【自分メモ】MAMPが起動しない時の対処方法
https://qiita.com/xiaoxiao/items/9e5686a4b02b34929c8b
このやり方は、自分のPCで同じポートを使用しているアプリやサイト?などがある場合、その接続を削除できる。
ポートがかぶってると、エラー起きるんだって。へぇ〜。
$ kill -9 XXXX
ちなみに、kill
のコマンドとkill -9
の違いはこんな感じらしい。
kill -9
はあまり推奨されてないらしい。(補足)
参考
https://www.atmarkit.co.jp/ait/articles/1708/04/news015.html
ポート80を削除したので、
これで治るかな〜と思ったら、エラーが変わったwなんでやw
しかも、
Apache Server
MySQL Server
Cloud
のCloud以外は全部点滅しない。
ファイルを開いても、何も見れないので、Apacheの接続ができなくなった。
http://localhost:10001/ が表示されない
Apache couldn't be started. Please check your MAMP installation and configuration.
昔、mysql動かなくなった事があって、MAMPを再インストールしたので、またやり直しか、、、と焦りました。
まさにこの人と同じような挙動でした。
https://www.webdesignleaves.com/pr/plugins/mamp_error_apache.html
(この方は諦めて再インストールしてました)
色々調べて、試しました。
できなかったけど、試した事全部書きます。
##envvarsファイルを編集
だめでした〜。
##macのApacheを停止、再起動
Apacheを起動するには
sudo apachectl start
停止したければ、
sudo apachectl stop
再起動したければ、
sudo apachectl restart
参考リンク
https://qiita.com/shuntaro_tamura/items/bdabcb77926dc92617b1
https://stackoverflow.com/questions/27387922/mamp-apache-couldnt-be-started-because-port-is-in-use-and-can-t-connect-to
だめでした〜。。
##Nginxはどうよ
ApacheがダメならNginxはどうよ。
問題があるのがどこの部分かを切り分けたい。
MAMPの設定をNginxに変えてみた。
↓
動くやんけ。Nginxは普通に動きました。
ということは、問題はApacheの中。どこだ?
##ポート変更
私のやり方での設定だと、ApacheとNginxのポート番号が80で同じ。
今更だけど、ここ変えてみる?
そもそもポート番号が同じなのはあまり良く無い。(らしい)
①トライ
Apache→80
Nginx→8888
にした。
↓
変わらんやんけ。
②トライ
Apache→8888 conf→8888
Nginx→80
にした。
↓
変わらんやんけ。
これでもダメで、これ以上方法が見当たらなかったので、エラーログを見ることに。
##エラーログを見る
/Applications/MAMP/logs/apache_error.logの中のエラーログをみました。
エラーログの見方
https://www.sakura-vps.net/apache-error-log/
しかし、そもそも
client denied by server configuration
File does not exist
のエラーが、最初から(MAMPをインストールした時から)発生してて、ひどいときは数分単位でエラーログが吐き出されてた。なんも参考にならん。
最初から設定が良くなくて、今おかしくなったのか?と思い、さらに原因が不明に。
一旦apache_error.logの中を全部消してみた。
今はApacheが動いてないからか、apache_error.logに何も追加されない。
httpd.confファイルの中身を全部コメントアウトにしても、エラーログは更新されず。
もはや、一部でもダメ。
confファイルがそもそも死んでる問題?
↓
##conf ファイルにシンタックスエラーがないか確認
sudo /Applications/MAMP/Library/bin/apachectl configtest
https://qiita.com/bezeklik/items/990bed2e7e529584fa57
結果
Syntax OK
conf、動いてるねぇ。
(まぁこれもあんま信用できないけど)
httpd.confの中身変えてみたらどうよ
→全部コメントアウトしてみた
httpd: Could not reliably determine the server's fully qualified domain name, using mynameMacBook-Pro.local for ServerName
おっ、反映されてる。
一応、コメントアウト+<だけ
httpd: Syntax error on line 605 of /Applications/MAMP/conf/apache/httpd.conf: /Applications/MAMP/conf/apache/httpd.conf:605: <> was not closed.
myname@mynamenoMacBook-Pro ~ % sudo /Applications/MAMP/Library/bin/apachectl start
ほ〜〜〜(?)
httpd.confを変更して、apache_error.logをみたときはエラーログは出ないけど、
ちゃんと動いてる事がわかった(?)
次はコメントアウトを解除して元の設定に復元し、
sudo /Applications/MAMP/Library/bin/apachectl start
↓
(48)Address already in use: make_sock: could not bind to address [::]:80
(48)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
それは正しい挙動だし、設定ファイルは、間違いなく使われているわ。
confファイルの
Listen 80を8080に変更した上で、
MAMPの設定も8080で動かしてみて
lsof -i :80
これ打ったら、80のポートを使用してる奴が見えるんよ。
見えるけど、結局振り出し(最初と同じ)に戻ったので、一旦ここで諦め。
ちなみに、ポートを80じゃなくて他の数字にしたら動いた。
(当たり前かw)
##翌日
上司にこれを送ってもらいました。
https://do-zan.com/mac-search-using-port/
https://minatokobe.com/wp/os-x/mac/post-54766.html
https://www.atmarkit.co.jp/ait/articles/0207/20/news003.html
lsof -i :80
sudo lsof -i:80
sudoすると、ポート80を使用してるアプリケーションが見つかった!!!まじで?!!
sudoすることをおすすめします。
確認した所、
loginwindowとtalagentのhttpdのポートとかぶっているようで。
loginwindowは消せないので、諦めました。
(結局w)
##結果
私は原因が良くわからず、やれることはいろいろやりました。
ここまでやってもだめだったら、普通にMAMPを再インストールするのが良いと思う。