- ベストアンサー
Apache,phpで画像が表示されない
- Apache2.2、php5を使用しています。非公開のディレクトリの画像を表示させるようにphpのプログラムを呼び出していますが、画像が表示されない状態です。
- header関数やfopen関数を使用して処理を行っていますが、小さい画像ファイルでは処理が終わりますが、大きい画像ファイルでは処理が中断されてしまいます。
- エラーログには情報が残っていないため、この問題の原因を特定するためのヒントが必要です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>ご指摘頂いたのHeaderは修正しましたが、画像は「X」の状態で... >URLでファイルを指定するといまくいくのですが... 画像を吐き出すPHPファイルのURLを、ブラウザのアドレスバーに直接入力した場合はうまくいくけれども、そのURLをHTML内のimgタグのsrc属性に指定した場合はダメということでしょうか? そうであれば、単なるHTMLの書き間違えか、PHP内でリファラーで何か処理を変えているくらいしか思いつきません。
その他の回答 (1)
- fdsjaklfjas
- ベストアンサー率81% (96/118)
ヘッダの設定が怪しいと思います。 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使っているのだったら、ラクしないと損です。
補足
回答ありがとうございます。 質問の書き方がわるくて申し訳ありません。 header('Content-length: ' . filesize(/.../../$fileName)); これは、実際には正常にファイルを記述しています。 ご指摘頂いたのHeaderは修正しましたが、画像は「X」の状態で... URLでファイルを指定するといまくいくのですが... file_get_contents( )やreadfile( )に変えると処理は正常に終了するようになりました。 でも、画像は「X」の状態から変わらないのです...
補足
>URLでファイルを指定するといまくいくのですが... これは、URLでファイルを指定するといまくいくが、PHPで吐き出すとうまくいかないって意味で書きました。 分かりにくくてすいません。 phpで吐き出す前に、セキュリティ関係の処理phpを呼んでいたので、その処理の前で強引にfile_get_contents( )するとうまくいく事がわかりました。いまだに本当の原因は判明しておりませんが、あとはなんとかなると思います。 お騒がせして申し訳ありませんでした。fdsjaklfjasさんの過去の回答も参考にさせて頂きました。 たいへんありがとうございました。