ローカルと公開Webサーバで$_SERVER[“DOCUMENT_ROOT”]の末尾「/」有無にハマった件
おそらく一般には特に役に立つことの無い情報になりますが、
私は長らくローカル環境と公開Webサーバーそれぞれが返してくる
「$_SERVER[“DOCUMENT_ROOT”
]」パスの差異に悩んでいました。
末尾に「/」が付くローカル環境と、「/」が付かない公開Webサーバーに。
長い間そういうものだとスルーしてきましたが、解決しましたのでご紹介しておきます。
$_SERVER[“DOCUMENT_ROOT”]の末尾「/」有無は「設定の違い」
これは単にApacheの設定の違いに起因していました。
私の環境では、ローカルのDNSサーバーを別に構築して、
自分の端末内にバーチャルホストを指定して、複数の開発環境を使い分けています。
バーチャルホストを利用する場合、
「{C:\Apache}\conf\extra\httpd-vhosts.conf」ファイルを利用して、
ドメインごとに、どの公開ディレクトリを利用するかを定義します。
以下は一例ですが、このように設定していました。
1 2 3 4 5 6 7 8 |
<VirtualHost ipv46.xxxxx.local:80> ServerAdmin webmaster@ipv46.xxxxx.local DocumentRoot "H:/subversion/{.....}/ipvx.info/public_html/" ServerName ipv46.xxxxx.local ServerAlias ipv46.xxxxx.local ErrorLog "logs/ipv46.xxxxx.local.log" CustomLog "logs/ipv46.xxxxx.local.local-access.log" common </VirtualHost> |
そして「スラッシュ有無」が発生していない(ローカル環境で末尾スラッシュが付かない)
ローカルのサイトは以下のように設定されていました。
1 2 3 4 5 6 7 8 |
<VirtualHost wp494.xxxxx.local:80> ServerAdmin webmaster@wp494.xxxxx.local DocumentRoot "H:\subversion\{.....}\wp494.rensrv.com" ServerName wp494.xxxxx.local ServerAlias wp494.xxxxx.local ErrorLog "logs/wp494.xxxxx.local-error.log" CustomLog "logs/wp494.xxxxx.local-access.log" common </VirtualHost> |
どうしてずっとWindows環境のApacheでは、
$_SERVER[“DOCUMENT_ROOT”]の末尾「/」が付いてくるのに、
公開サーバー(レンタルサーバ:Linux)では末尾に「/」が付かないのかなと疑問だったのです。
いやいや、自分でスラッシュ付けてるじゃないか!
DocumentRoot "H:/subversion/{.....}/ipvx.info/public_html/"
DocumentRoot "H:\subversion\{.....}\wp494.rensrv.com"
非常にお粗末で申し訳ないのですが、
自分のローカル環境の設定で「DocumentRoot」に指定したものが、
「$_SERVER[“DOCUMENT_ROOT”
]」で返ってくる。
それだけだったのです。
もし「httpd-vhosts.conf
」を使っていないという方でも、
「httpd.conf」にも以下のような記述があるはずです。
DocumentRoot "${SRVROOT}/htdocs"
何か独自に変更をされていて、末尾スラッシュに悩まされているようであれば、
設定をご確認されてみてはいかがでしょうか。
尚、ローカル環境で「httpd-vhosts.conf
」末尾スラッシュの有無は、
どちらでもApacheの動作に支障はありませんでした。
ずっと、5~6年この環境で開発をしてきていた為、悩まされてきました。
分かればスッキリ。
地味にずっと困っていましたが、たぶん自分だけではないと信じて恥の公開を。
こういうの気づけば一瞬。
でも気づかない限りは、延々にハマり続けるという怖さがありますね。
今回は以下の検証では「末尾スラッシュがローカルでも出ない!」という結果があり、
あれ???となって、無事気づくことができました。
当サイト内のコンテンツおよび画像を含むすべてにおいて、管理人アルゴリズンが著作権を保持しております。
当サイトでご紹介しております写真等につきましては著作権の放棄はしませんが、
ライセンスフリーでご利用いただいて構いません。
コンテンツを有益であると感じていただけましたら非常に光栄です。
ありがとうございます。
サイト内コンテンツを引用される際には、出典元として当サイト(個別記事)へのリンクをお願いいたします。
申し訳ございませんが、無断転載、複製をお断りさせて頂いております。
公開日: