かすてらすねお。

見聞録的ななにか。

Windows7x64でXAMPPのApacheが起動しない問題

Windows7 64bitにXAMPPを導入してApacheが動かない人むけ。

XAMPPはv3.2.1をインストール。

管理者権限での起動が望ましいことを知っていたので管理者権限で起動。

XAMPP管理画面からMySQLは無事起動したがApacheが起動しない。

ログにはPID=4のプロセスがPort80を使用中で進捗ダメとのこと。

これはLogs → Apache(error.log)や管理ツールのイベントビューアーでも確認可能。

9:34:23  [Apache] Problem detected!

9:34:23  [Apache] Port 80 in use by "Unable to open process" with PID 4!

9:34:23  [Apache] Apache WILL NOT start without the configured ports free!

9:34:23  [Apache] You need to uninstall/disable/reconfigure the blocking application

9:34:23  [Apache] or reconfigure Apache and the Control Panel to listen on a different port

 管理画面のNetstatで確認するとPID=4はSystemプロセスだそうだ。

じゃあタスクマネージャからプロセス終了させればいいじゃん。って思うじゃん?

 しかしタスクマネージャからは具体的なプロセス名が確認できなかった。

(本来あるべきPID=4の行が、おそらく暗黙的に、表示されていなかった)

じゃあどうするんだよ!っていうのを頑張って調べた人がいた。

Windows7でApacheが起動しない

ただ今回厄介だったのは、上記の例の通り、PIDが「4」、つまりSystemプロセスだったこと。
詳細は「@IT:Windows TIPS -- Tips:netstatでリッスンしているプロセスを特定する」で詳しく解説されているが、要するに、ポート80を占有しているのは「システムプロセスですよ」としか教えてもらえず、すぐには犯人である「Web Deployment Agent Service」を特定できなかった。
というわけで、上記ではサクっと解決した風に書いたが、実はコンパネ>サービスで、サービス一覧から怪しそうなサービスを停止しては、ポートの状態を確認する、という地道な調査で突き止めた。
(今回は犯人に「Web~」というサービス名が付いていたため、2発目ぐらいで運良く犯人にヒットしてくれた。)

 Port80を使用しているサービスを突き止めて停止させればOKとのこと。

それをこの人はサービスの停止とプロセス状態の確認を繰り返して、

運良く早く解決できたとのこと。

この人に倣って同じサービスを停止させたところビンゴだった。

環境構築段階でたいへん悩んで困っていたので助かった…。