- ベストアンサー
CGIで画像表示されなくGIF89aXとなります、なぜ?
CGI初心者です。 CGI可のレンタルサーバーで、CGIで画像を表示させたいのですが、 ブラウザで見ると画像がでません。 画像の位置、パーミッションなどは何度も確認しました。 転送はバイナリです。 ------------- #!/usr/bin/perl $view = 'r1.gif'; print "Content-type: image/gif\n\n"; open IMGG,"$view"; binmode (IMGG); print <IMGG>; close (IMGG); ------------------------ このCGIのhttp:~CGIを直接打つとブラウザに 「GIF89aX」とでて画像が出ません。 画像をhttp:~で直接指定するとちゃんと画像が出ます。 なぜでしょう? すぐに回答ほしいです。 どなたか詳しい方、よろしくお願いしま~す。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
xreaはLinuxなのでbinmodeは関係ないですね。 拡張子を.xcgにしてみてはいかがでしょうか。
その他の回答 (2)
- miharahiromi
- ベストアンサー率19% (32/168)
広告つきのサーバならそのcgiと同じフォルダ内の.htaccessに、 LayoutIgnoreURI *.cgi 上の1行を記述してみれば。
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
> print <IMGG>; これを while(<IMGG>){ print $_; } としてみてください。 サーバーはWindowsサーバーでしょうか? もしそうならSTDOUTもbinmodeにする必要があります。 理由とか文法は文法書なり解説書、解説サイトを見て下さい。
お礼
お返事ありがとうございます。 while(<IMGG>){ print $_; } としても変わりません。 >サーバーはWindowsサーバーでしょうか? スイマセン。意味がわかりませんが、レンタルサーバーは XREAです。 >もしそうならSTDOUTもbinmodeにする必要があります。 これは binmode (IMGG); のあとに binmode(STDOUT);を入れるということでしょうか? いれましたが、やはり同じです。 もう何日も悩んでいます。 何かご意見ありましたら引き続きよろしく お願いしま~す。
お礼
taloo様 ご意見ありがとうございます。 無事表示されました。 ありがとうございました。