0

WindowsでApacheを使用してローカルでリンクをテストする際に問題が発生しました。最終的なリンクの形式は次のとおりです。

file:///C:/Documents and Settings/USUARIO/My Documents/xampp/htdocs/my_website/images/january/my_image.jpg

画像は表示されません。ただし、imgタグからsrcを直接コピーしてブラウザ(Firefox)に貼り付けると、画像が表示されます。

次のコードを使用してリンクを生成します。

次を使用して画像ディレクトリを定義します。define(IMAGE_DIR, dirname(__FILE__).'/images/');
次に、以下を使用してパスをフォーマットします。

$imgPath = IMAGE_DIR.$month.$img;   
if($localServer)
{
   $imgPath = str_replace('/','\\', $imgPath);
   $imgPath = 'file:///'.$imgPath;
}

私は何を間違っているのですか?

4

2 に答える 2

2

file://WebサーバーからロードされたページのURLを使用する画像ソースを生成しています。ファイルURLは、Webサーバーに要求を行わずに、ディスクから直接ファイルをロードするようにブラウザーに指示します。セキュリティ上の理由から、Firefoxやその他のブラウザでは、Webサーバーが提供するページがローカルファイルを参照することを許可していないため、画像を表示しないでください。画像ソースがコンピューター上のパスへの参照になるため、リモートでサイトにアクセスするユーザーもファイルにアクセスできなくなります。

画像を表示するには、画像ソースを変更して、ウェブサーバー上の場所を参照するようにする必要があります。たとえばimages/january/my_image.jpg、または/images/january/my_image.jpg

images/january/my_image.jpg要求されているページに関連してWebブラウザによって解釈されます。たとえば、画像がのページに表示される場合http://localhost/page1.php、ブラウザはを要求しhttp://localhost/images/january/my_image.jpgます。ただし、画像がのページで使用されている場合、ブラウザは代わりにリクエストします。http://localhost/subdir/page1.phphttp://localhost/subdir/images/january/my_image.jpg

/images/january/my_image.jpg常にウェブサイトのルートを基準にして解釈されます。Webブラウザはhttp://localhost/images/january/my_image.jpgの任意のページを要求しますhttp://localhost

たとえば、別のWebサーバー上の画像を参照する必要がある場合は、絶対URLを使用することもできますhttp://otherhost/images/january/my_image.jpg

于 2010-06-20T20:40:36.737 に答える
0

'/'または'\'の代わりに定数"DIRECTORY_SEPARATOR"を使用することをお勧めします

于 2010-06-20T22:01:46.877 に答える