先日、担当しているプロジェクトに新人さんが入って来られました。xamppの設定でエラーが出たようで助けを求められたのですが、知っている限りの対処をしても解決せず、そんな中、先輩エンジニアのOさんが颯爽と解決してくださった際の備忘録です。
「xampp エラー」
PHPに触れてから、このタイトルの検索を何度やったか思い出せない。。。
それぐらいよく起こるxamppのエラー。(ほとんどは個人の設定によるものですが。。。)
今回はその数あるエラーの中でもよく聞くエラー
「This may be due to a blocked port」
に遭遇した際の解決までのあれこれを備忘録としてまとめたいと思います。
「This may be due to a blocked port」とは?
簡単に言ってしまえば「apacheを起動するためのポートが空いていませんよ!」ということ。
調べていてよく出てくるのは「Skype」が80番ポートを使ってしまっているという事案。
Skypeは初期設定だと80番ポートを使う設定になっているらしいのです。
それは置いておくとして、
このエラーを見てとりあえずおこなったのは「httpd.conf」と「httpd-ssl.conf」のポート番号をいじることです。
よくある解決法
[httpd.conf]
Listen 80
↓
Listen 81
上記に変更(※設定値は任意)
ServerName localhost:80
↓
ServerName localhost:81
上記に変更(※設定値は任意)
[httpd-ssl.conf]
Listen 443
↓
Listen 4433
上記に変更(※設定値は任意)
VirtualHost _default_:443
↓
VirtualHost _default_:4433
上記に変更(※設定値は任意)
ServerName www.example.com:443
↓
ServerName www.example.com:4433
上記に変更(※設定値は任意)
以上の設定変更を終え、apacheを再起動すると無事解決…
…とならなかったので、以降が今回の備忘録の本題となります。
コマンドからapacheを起動させる
颯爽と現れたOさんが真っ先におこなったのが、コマンドプロンプトを起動して、「apache_start.bat」をたたくというものです。
(Oさんはバッチをたたき終わった後、颯爽と席に戻られました。)
Ctrl + r でコマンドプロンプトを起動
↓
xamppフォルダに移動
↓
「dir」コマンドをたたく(xamppフォルダの中身に何があるか確認するコマンドです)
「apache_start.bat」というバッチファイルがあることを確認
この段階でapacheはまだ起動していませんが、下の画像のように「apache_start.bat」をたたくと…
難解な文字列を吐き出しながら、apacheが起動します
となるかもしれませんが、
この行為の優れているところは、エラーになる場合はエラー箇所を吐き出してくれるところなのです。
その時のエラーを再現できなかったので文字列のみの表現にはなりますが、(再現しようとして、脱線に次ぐ脱線を引き起こした挙句至ることができませんでした。。。)
エラー内容は以下のようなものです。
…なるほど。
「httpd.conf」の247行目がエラーを起こしているということですね。
設定の仕方間違えたかな?と思って、
該当箇所を見に行ってみると、そこに書かれていたのは…
DocumentRoot
…なんで?と思ったのと、
…ああ。と思ったのはほぼ同時だったように思えます。
DocumentRootとその下のDirectoryに設定の変更を加えているのに、
htdocs配下にそんなフォルダが存在していなかったのです。。。
apacheは参照するはずのものがないから怒ってらっしゃったようです。
もうお忘れかもしれませんが、
エラーを出したのはお隣さんです。。。
転ばぬ先のコマンド
今回エラーがあったファイルは「httpd.conf」ですが、
xamppのエラーのほとんどはここに集約されると思い込んでおります。
そこで!
今後「httpd.conf」に変更を加えたら必ずこのコマンドを実行しようと画策しております。
xamppフォルダの中のapacheフォルダの中のbinフォルダに移動
httpd -t
上記のコマンドをたたくと、
問題なければ、上の画像のように「Syntax OK」とでます。
エラーがあればエラー箇所を指摘してくれます。
エラー吐くならapache_start.batをたたけばいいんじゃないかと思われるかもしれませんが、
色々なコマンドに触れるために、敢えて、色々なことをやろうじゃないかというスタンスです。
まとめ
今回、詰まった原因は些細なものでしたが、得たものは大きかったように思えます。
今後xamppの設定につまづかないという事ではなく、コマンドをたたくことの有用性に気づけたことです。コマンドには苦手意識があって、あまり触れてきませんでしたが、今回改めてその偉大さに気づかされました。
そしてなにより…
エンジニアっぽい
これに尽きます。
コマンドを極めてもっとエンジニアっぽくなりたいと思いました。