『ドキュメントルートの変更が反映されない』にハマって酷い目に遭った話。
『検証環境のドキュメントルートのディレクトリ名がちょっとアカンから本番と合わせて直して』という、“ちょっとLinux触って開発環境構築したことがあるような人”ならさっくりできるだろう修正にドハマりして「動け! なぜ動かん!?」と二時間ぐらい試行錯誤を繰り返したので備忘に。
検索しても直接的な解決法が全く出てこなかったので、同じようなハマり方をした人が苦しむ時間を一秒でも短縮できれば幸い。
ドキュメントルートの変更といえば、
/etc/httpd/conf/httpd.conf の
DocumentRoot
と
# Further relax access to the default document root:
<Directory “/var/www/(ここ)”>
を変更すればよいわけですが。
vim /etc/httpd/conf/httpd.conf
で、ちゃちゃっと直して、
sudo systemctl restart httpd
で、反映、と。
AH00526: Syntax error on line 119 of /etc/httpd/conf/httpd.conf:
DocumentRoot ‘/var/www/gelgoog/public’ is not a directory, or is not readable
――そしたらこんなんが出ましてですね。
そんなバカな、/etc/httpd/conf/httpd.confの変更は完璧だったはず、と開いてみるとやっぱり変わっている。
ディレクトリの指定が間違っているのか、と、見に行けばそんなこともなく。
存在していて中にpublic入っててソースコードも展開されている。
どう確認してもこんな塩梅。
で、『httpd.conf 反映されない』『ドキュメントルート 変更できない』などで調べまわっても全然出てこない。
『httpdを再起動する』とか『何回も再起動する』とか『一旦止めて始動する』とか、はたまたどっかの質問回答サイトの「一生懸命なのはわかるが、落ち着いてから5分ぐらい自分で調べようぜベイビー」みたいなのが引っかかるばかり。
悪戦苦闘の末に『service httpd configtest』が出てきて、『httpd.conf直したときにどっか間違ってないかチェックしてくれる』と。
……いやまあ、同じSyntax error文言が出るばっかりだったんですが……。
最終的にたどり着いたのがこのコマンド。
httpd -t -D DUMP_CONFIG 2>/dev/null | grep ‘# In’ | awk ‘{print $4}’
『httpd.confのほかになんか設定ファイルがいるかどうか調べる』でございます。
やってみたら三つぐらいさらにドキュメントルートを修正する必要がある.confファイルが見つかって……それ直してようやくドキュメントルートの変更が反映されました。
……いや、ひどい目にあった。
“もっぱらPHP屋でやってきてインフラは必要なときに必要なところしか触らなかった人”が転向すると、こういう『知ってれば楽勝だが知らないと大苦戦する』に、ときたまわりとしょっちゅうハマって酷いことになるので、そういう人に向けて記録。
『なまじ知ってると楽勝だから残されない』類の情報かもしらんので。