localhostで開発を進めているのだが、突然接続拒否になった。
開発環境は、Windows10 64bit
Apache2.4.37
を使っている
原因は不明だが、思い当たる点が一点あった。
昨日シャットダウンをする時に、いろんなアプリが更新されたようだ。
ということで、localhost 接続 拒否で検索したら、Windowsのアップデート時に
Apacheの設定が変っていたと書いてある記述を見たので、早速Apacheのファイルを見てみる。
C:\Apache24\conf\httpd.cofを開く。
518行目にあるIncludeの#がついていたので、#を取ってみた。
次にC:\Apache24\conf\extraのhttpd-vhosts.confを開く。
ここは特に変わりなかったが、VirtualHostのServerName localhostの前に#があったので、#を取る。
これで、Apacheの設定は元に戻ったはず。
でも、接続できない。
そこで、Aptcheが起動しているか調べるために、
コマンドプロンプトで下記のようにhttpd -vと入力する。
すると、下記のように返ってきた。
C:\WINDOWS\system32>httpd -vServer version: Apache/2.4.37 (Win64)
Apache Lounge VC15 Server built: Nov 21 2018 11:51:35
C:\WINDOWS\system32>
Apacheのバージョンが返ってきたので、Apacheは動いていることになる。((注)入力の際、httpdの後にスペースが一つ必要)
次にhttpd -tと入力する。
これで、syntaxエラーがあるかないかがわかる。
今回、C:\Apache24\conf\httpd.cofの517行目のVirtual周辺のSyntaxエラーが出てきた。
518行目にあるInclude#を取った際に、一つ上の行のVirtual hostsの#も取ってしまったのが問題だったようだ。
これで、localhostに接続してみるが、これでも動かない。
次にコマンドプロンプトにhttpd -k restartと入力する。
これは、Apacheの再起動。
そうすると、Apache24のhtdocsにsoycmsがなくなっているというエラーが返ってきた。
C:\Apache24\conf\httpd.cofの259行目
DocumentRoot "${SRVROOT}/htdocs"
<Directory "${SRVROOT}/htdocs">
にして、後に続いていたsoycmsの文字を取ってみる。
これでもう一度接続するが、動かない。まだ、soycmsがなくなっているとエラーがでるので、逆にhtdocs内に消えたsoycmsフォルダを空で作ってみる。
そして、もう一度接続。
管理者としての権限がないと言われたので、
コマンドプロンプトにカーソルを合わせて、右クリックして、さらに右クリックで
管理者として実行を押す。
そうすると、localhostが動いた。
今回は、C:\Apache24\conf\httpd.cofのsoycmsを消してみたが、ここはいじらなくてもよかった。
いじっても特に支障はなかったけど。
結局動かなかった理由は、syntaxエラーとsoycmsのディレクトリが消えてきたことだった。
<VirtualHost *:80>は実際に使っていなかったが、C:\Apache24\conf\extraのhttpd-vhosts.confで
<VirtualHost *:80>
DocumentRoot C:\Apache24\htdocs\soycms
と記載していれば、必ずsoycmsという名前をつけたディレクトリが存在していないといけないということがわかった。