2012-04-05 8 views
0

$ _SERVER [DOCUMENT_ROOT]を使用して、すべてのリンクが正しく動作することを確認しています。例えば:それは内のファイルの実際のパスを重要ではありません

<link href="' . $_SERVER[DOCUMENT_ROOT] . '/favicon.ico" rel="icon" /> 

、それは常にドキュメントルートからの相対ファビコンの正しい場所を見つけるでしょう。

これはすべて私のWebサーバー上で正常に動作します。しかし、正しいパス(C:/ Local/MySite)を指している間、私のローカル開発サーバー(Windows 7、Apache 2.2、仮想ホスト構成)では、実際に何も起こりません(faviconは機能しません。ロードされるなど)

$ _SERVER [DOCUMENT_ROOT]をローカルで使用する方法はありますか?

"http://"と$ _SERVER [HTTP_HOST](<link href="http://' . $_SERVER[HTTP_HOST] . '/favicon.ico" rel="icon" />)を使用して同じ結果が得られることがわかりました。あるいは、私は$ _SERVER [DOCUMENT_ROOT]を使い続け、サーバーの書き換えルールを使ってローカルで実行されるものに解析し、ブラウザーのままにしておくことができます。

答えて

3

$_SERVER[DOCUMENT_ROOT]は、ウェブサイトのルートディレクトリへの完全なパスであり、リンクや画像では目立たなくなります。

これまで述べてきたことは、これまでのところOKです。ただし、$_SERVER[HTTP_HOST]は、HTTP/1.1を使用して接続し、クライアントがHostヘッダーを発行する場合にのみ機能します。しかし、常に$_SERVER[SERVER_NAME]が動作するはずです。 $_SERVER[SERVER_NAME]は仮想ホストのメインアドレスを使用するので、サーバにエイリアスがある場合は...

+0

ローカルであろうとなかろうと、$ _SERVER [DOCUMENT_ROOT]はまったく使用しないでください。 –

+0

はい、リンク/画像で$ _SERVER [DOCUMENT_ROOT]を使用しないでください。 PHPを使用してファイルをコピー/移動する場合など、その用途はあります。 – Powerlord

+2

$ _SERVER ["DOCUMENT_ROOT"]は、スクリプトの内部用にのみ使用する必要があります(...が必要ですが)、externals(html、images ...)には使用しないでください** – StormByte

1

ドキュメントルートはサーバ上のローカルパスであり、ブラウザが見る限りURLスペースには何の意味もありませんあなたのサイト。あなたのHTMLが

<img src="c:/site/html/favicon.ico" /> 

を持っている場合

は、あなたがしようと、ユーザー自身のローカルドライブからそのファビコンをロードするために、ユーザーのブラウザに指示しています。これは機能しないだけでなく、ユーザーがWindowsマシン上にいることも前提としています。 Mac/Unix/LinuxユーザーはC:ドライブを持っていないので、自分のローカルファイルシステムのルートにある/site/htmlディレクトリツリーを見てみましょう。

$_SERVER['DOCUMENT_ROOT']は、サーバー内のローカルファイル操作に使用されます。 fopen()、file_get_contents()など...しかし、クライアント側の操作では本質的に全く役に立たない。

関連する問題