プロが教える店舗&オフィスのセキュリティ対策術

xamppをインストールし、様々なことを行っています。

現在phpで画像を表示させようと考えています。
しかし、プログラムを実行すると、
画像ファイル"http://~~~test.php"は壊れているため表示できませんでした。
と表示されてしまいました。

なので、もっと簡単なプログラムで確認してみようということで、
sample.php
<?php
header('Content-type: image/jpeg');
readfile('C:\xampp\htdocs\php1st\image\a.jpg');
?>

で実行してみました。
しかし、こちらでも上記と同じエラーが起こってしまいます。

友人のPCで行ったところ、実行できました。
友人はxamppの設定を少しいじったと言っていたのですが、どこをいじったかは覚えていないそうです。

どうかご意見いただければ、幸いです。

A 回答 (4件)

ファイルがBOM付きのUTFだったりしませんか?

この回答への補足

ご回答ありがとうございます。

BOMはついていないです。
友人のPCで動作していたので、設定の方に問題があるのかなと思っているのですが…。

何かご指摘あればよろしくお願いいたします。

補足日時:2013/08/07 19:58
    • good
    • 0
この回答へのお礼

よく確認したところBOMが付いていました。

本当にありがとうございます。

お礼日時:2013/08/08 14:11

readfileだけで表示されたのは、そのファイルのバイナリデータです。


当然表示できない文字は「◆」に「?」が載ったような文字で化けで表示されます。


もしかしてブラウザの問題・・・?
http://ameblo.jp/hiroro-chi/entry-10894465064.html

この回答への補足

ご回答ありがとうございます。

ブラウザはFirefoxとchromeとIEで行っていますがどれも同じ結果です。

補足日時:2013/08/08 12:25
    • good
    • 0
この回答へのお礼

解決できました。
ご指摘ありがとうございました。

お礼日時:2013/08/08 14:11

readfileを行うと、つまり普通に該当リソースを出力することになりますが、



一度header関数をコメントアウトして実行されてみてはいかがでしょうか。

jpgの画像のバイナリがそのままブラウザに表示されると思います。

その時点でエラーメッセージが出てくるようであればそのエラーを正せば治ると思います。

ありがちなのが、PHPの警告(fatal errorではなくwarning。推奨されていない記述などの時に出てくるエラー)が出力されてしまっているとかといった出来事だったりします。

いかがでしょうか。

この回答への補足

ご回答ありがとうございます。

エラーメッセージや警告は出なかったのですが、文字化けした文字というか記号が出力されました。

補足日時:2013/08/08 01:06
    • good
    • 0

?>



の後に改行入ってたりするオチじゃないですよね・・・?
そもそもこのようなときは「?>」はバグ防止のために省略するのが普通です。終了タグは必須ではありません。

この回答への補足

ご回答ありがとうございます。

改行・?>を変更して実行してみたのですが、同じ結果でした…

補足日時:2013/08/07 19:36
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!