読者です 読者をやめる 読者になる 読者になる

居眠りプログラマの休憩所

へっぽこSIerなプログラマが書き起こす日記です。

xamppの設定に苦しめられた件

今日の業務中にxamppでlocalhostに繋ごうとしたら、503が出て死にました。
忘れないために書いておこうと思います。

とりあえず、xampp(というかlocalhost)でよくあるエラーをまとめてきます。

ポートの占有

大抵はこれ(多分)
skype入れてる人は要注意(skypeの設定に『追加の受信接続にポート80と443を使用』とかいう需要があるのかよくわからないチェック項目があるため)
他にもポート80を使うアプリ入れてる人は注意しましょう。

試しに上記で上げたskypeの例で試してみたいと思います。
コマンドプロンプトを起動して、netstat -ano*1でポートが使われているか確認します。

f:id:hayahina82:20170314223059p:plain
↑の場合はポート80がPID14880のプロセスに使われています。
※長すぎて見えない!! という方はコマンドプロンプトのプロパティから画面バッファーの高さを長めに設定してみましょう。

次に、tasklist /svc /fi "PID eq 14880"*2でPID14880のプロセス名を突き止めます。
f:id:hayahina82:20170314224425p:plain
想定通りですが、skype.exeが使っています。
※イメージ名を見れば大抵わかると思いますがわからないものだったらググってね

この例での対処は単純でskypeの『追加の受信接続に(以下略)』のチェックを外せばよいだけです。
ほかのアプリの場合は設定でいじれるのなら、設定で回避するのが一番だと思います。
できないときは仕方がありません。タスクを終了させましょう。
ポートの占有の対処はこれで完了です。

hostsファイル

結果から言うと、これと後述するもう一つが原因でした。
C:\Windows\System32\Drivers\etc\hosts というファイルがおかしい場合です。
では、見てみます。

#	127.0.0.1       localhost

……おや?(実際に起きた事例です)
状況がつかめない方のために言うと、コメントアウトされています。

対処としてはコメントアウトを解くだけでいいです。
ないとは思いますが、削除されていた場合は上述の#を除いたコードを記述しましょう。

原因ですが、適当に調べたところWindowsUpdateでこうなることがあるらしいです。なぜだ……。

ファイアウォール

なんでお前が来るんだよっ!
体験してないため実感はわきませんが、割とあるそうです。
本当にざっくりですが紹介しておきます。

結論から言います。
アンチウイルスソフトが邪魔してます。
ファイアウォールの設定からポートを開放しましょう。

proxy

これでした。
悲しくなりました。
業務で使うPCの場合、引っかかる場合があります。
プロキシ通したらそりゃつながりませんよね……。

対処法
Win10の場合
Windowsの設定からネットワークとインターネット.プロキシの設定画面に入ります。
f:id:hayahina82:20170314233047p:plain
プロキシのアドレス云々の入力フォームの下に『ローカル(イントラネット)のアドレスにはプロキシ サーバーを使わない』というチェックボックスがあります。こちらにチェックを入れて保存するだけです。

Win7の場合

  1. IEのインターネットオプションを出す
  2. 接続タブからLANの設定
  3. ローカルアドレスにはプロキシ サーバーを使わない的なチェックボックスがあるのでチェックをつける

これで503の人は状況が変わります。



大きな項目でいうと、この程度だと思います。
ほかにも、Apache自体の設定がおかしかったりする場合があるらしいんですが、自分でいじらなければ出ることはないと思います。


以下参考
www.cherrypieweb.com
colors1314.blog68.fc2.com
blog.verygoodtown.com

*1:-a: 接続を表示, -n: IPアドレス・ポート番号を表示, -o: プロセスを表示

*2:/SVC: プロセスのサービスを表示, /fi: フィルタ