2014-07-01

php 画像表示で文字化けというか文字の羅列が表示されるとき readfile 使

readfile:

説明「ファイルを読んで標準出力に書き出します」

返り値「ファイルから読み込んだバイト数を返します」

header('Content-Type: image/jpeg') とか header("Content-Length: ???"); とか、ちゃんと書いているのに、ブラウザでなんで画像で表示されないんだろ...もしくは " headers already sent by ... "とエラー表示されてる... readfile のあと、データ出力前にソッコーで header 出力させているのになぁ。。

こんなとき、そのPHPコード、readfile の戻り値が読みこまれたデータである勘違いしてつくられてていませんか?

この件に限りませんが、サンプルコードとか勘違いが多いので要注意です。「脳内でうまく動いた」ものを、検証せずにそのままWEBに載せている人って結構ますから

ほかには php.ini の output_bufferingを On にしたら直った、phpファイルBOM 付き <?php や ?> の前後に空白や改行などがある、などが原因の場合もありますね。

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん