レンタルサーバー選びの迷いを解決!全力サポートします

Google or AdMax Promotion (srv)

ローカルと公開Webサーバで$_SERVER[“DOCUMENT_ROOT”]の末尾「/」有無にハマった件

おそらく一般には特に役に立つことの無い情報になりますが、
私は長らくローカル環境と公開Webサーバーそれぞれが返してくる
$_SERVER[“DOCUMENT_ROOT”]」パスの差異に悩んでいました。
末尾に「/」が付くローカル環境と、「/」が付かない公開Webサーバーに。
長い間そういうものだとスルーしてきましたが、解決しましたのでご紹介しておきます。

$_SERVER[“DOCUMENT_ROOT”]の末尾「/」有無は「設定の違い」

これは単にApacheの設定の違いに起因していました。

私の環境では、ローカルのDNSサーバーを別に構築して、
自分の端末内にバーチャルホストを指定して、複数の開発環境を使い分けています。

バーチャルホストを利用する場合、
「{C:\Apache}\conf\extra\httpd-vhosts.conf」ファイルを利用して、
ドメインごとに、どの公開ディレクトリを利用するかを定義します。

以下は一例ですが、このように設定していました。

 

そして「スラッシュ有無」が発生していない(ローカル環境で末尾スラッシュが付かない)
ローカルのサイトは以下のように設定されていました。

 

どうしてずっと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年この環境で開発をしてきていた為、悩まされてきました。

 

分かればスッキリ。

地味にずっと困っていましたが、たぶん自分だけではないと信じて恥の公開を。
こういうの気づけば一瞬。

でも気づかない限りは、延々にハマり続けるという怖さがありますね。

今回は以下の検証では「末尾スラッシュがローカルでも出ない!」という結果があり、
あれ???となって、無事気づくことができました。

 


プロモーション

Google or AdMax Promotion (srvpos)

公開日:

コンテンツナビ
すべて展開 | すべて省略

AdMax Promotion

カテゴリ
すべて展開 | すべて省略

QRコードからもこのURLを開けます。