• ベストアンサー

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:~で直接指定するとちゃんと画像が出ます。  なぜでしょう? すぐに回答ほしいです。 どなたか詳しい方、よろしくお願いしま~す。

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

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

xreaはLinuxなのでbinmodeは関係ないですね。 拡張子を.xcgにしてみてはいかがでしょうか。

参考URL:
http://www.xrea.com/?action=ad
sou_sou
質問者

お礼

taloo様 ご意見ありがとうございます。 無事表示されました。 ありがとうございました。

その他の回答 (2)

回答No.2

広告つきのサーバならそのcgiと同じフォルダ内の.htaccessに、 LayoutIgnoreURI *.cgi 上の1行を記述してみれば。

回答No.1

> print <IMGG>; これを while(<IMGG>){ print $_; } としてみてください。 サーバーはWindowsサーバーでしょうか? もしそうならSTDOUTもbinmodeにする必要があります。 理由とか文法は文法書なり解説書、解説サイトを見て下さい。

sou_sou
質問者

お礼

お返事ありがとうございます。 while(<IMGG>){ print $_; } としても変わりません。 >サーバーはWindowsサーバーでしょうか? スイマセン。意味がわかりませんが、レンタルサーバーは XREAです。 >もしそうならSTDOUTもbinmodeにする必要があります。 これは binmode (IMGG); のあとに binmode(STDOUT);を入れるということでしょうか? いれましたが、やはり同じです。 もう何日も悩んでいます。 何かご意見ありましたら引き続きよろしく お願いしま~す。

関連するQ&A