• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Apache,phpで画像が表示されない)

Apache,phpで画像が表示されない

このQ&Aのポイント
  • Apache2.2、php5を使用しています。非公開のディレクトリの画像を表示させるようにphpのプログラムを呼び出していますが、画像が表示されない状態です。
  • header関数やfopen関数を使用して処理を行っていますが、小さい画像ファイルでは処理が終わりますが、大きい画像ファイルでは処理が中断されてしまいます。
  • エラーログには情報が残っていないため、この問題の原因を特定するためのヒントが必要です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

>ご指摘頂いたのHeaderは修正しましたが、画像は「X」の状態で... >URLでファイルを指定するといまくいくのですが... 画像を吐き出すPHPファイルのURLを、ブラウザのアドレスバーに直接入力した場合はうまくいくけれども、そのURLをHTML内のimgタグのsrc属性に指定した場合はダメということでしょうか? そうであれば、単なるHTMLの書き間違えか、PHP内でリファラーで何か処理を変えているくらいしか思いつきません。

tobiuma
質問者

補足

>URLでファイルを指定するといまくいくのですが... これは、URLでファイルを指定するといまくいくが、PHPで吐き出すとうまくいかないって意味で書きました。 分かりにくくてすいません。 phpで吐き出す前に、セキュリティ関係の処理phpを呼んでいたので、その処理の前で強引にfile_get_contents( )するとうまくいく事がわかりました。いまだに本当の原因は判明しておりませんが、あとはなんとかなると思います。 お騒がせして申し訳ありませんでした。fdsjaklfjasさんの過去の回答も参考にさせて頂きました。 たいへんありがとうございました。

その他の回答 (1)

回答No.1

ヘッダの設定が怪しいと思います。 header('Content-length: ' . filesize(/.../../$fileName)); →ご質問の問題の原因はコレだと思います。パスがおかしくないですか? Content-Lengthヘッダが0になりませんか? header('Content-transfer-encoding: binary'); →HTTP1.1では廃止されていますし、一般的には付けないと思います。 header('Content-Disposition: attachment; filename="' . $fileName . '"'); →このケースでは、このヘッダはいらないと思います。 >fopen() ->> fpassthru(); readfile関数だと一行ですみますよ。せっかくPHP使っているのだったら、ラクしないと損です。

tobiuma
質問者

補足

回答ありがとうございます。 質問の書き方がわるくて申し訳ありません。 header('Content-length: ' . filesize(/.../../$fileName)); これは、実際には正常にファイルを記述しています。 ご指摘頂いたのHeaderは修正しましたが、画像は「X」の状態で... URLでファイルを指定するといまくいくのですが... file_get_contents( )やreadfile( )に変えると処理は正常に終了するようになりました。 でも、画像は「X」の状態から変わらないのです...

関連するQ&A