[CGI]ローカル上のhttpdサーバを使ってもブラウザ上にjpgが出力されないのは何故?

[上に] [前に] [次に]
taka 2000/03/13(月) 10:33:19
win32環境上で

サーバ :apache 1_3_9
ブラウザ:ie5
Perl  :5.005_03(win32)

PerlでCGIを使っているんですが、何故かブラウザ上に画像
(*.gif *.jpg)が表示されません。


 ちなみにそのスクリプトは
#!/usr/local/bin/perl

print <<"EOH";
Content-type: text/html

<HTML><BODY>
<IMG SRC="./graph/purple_y.jpg">
</BODY></HTML>
EOH

 はかれたエラーログは
[Mon Mar 13 09:57:35 2000] [error] [client 127.0.0.1] a:/home/cgi/iaa2/graph/purple_y.jpg is not executable; ensure interpreted scripts have "#!" first line
[Mon Mar 13 09:57:35 2000] [error] [client 127.0.0.1] (2)No such file or directory: couldn't spawn child process: a:/home/cgi/iaa2/graph/purple_y.jpg


 でも以下のスクリプトだと一応画像は出力されました。
#!/usr/local/bin/perl

print "Content-type: image/jpeg\n\n";

open(IN,"<./graph/purple_y.jpg") or die "Failed $!";

binmode IN;
binmode STDOUT;
print while(<IN>);

close(IN);


作業スクリプトのパス
A:\home\cgi\iaa2\try.cgi
出力画像のパス
A:\home\cgi\iaa2\graph\purple_y.jpg


 Apache1_3_9は約3ヶ月ぐらい前から使っていますが、
最初の頃はIMGタグでも表示されていました。
 マシンをリストアしたので、設定ファイルを間違えたのかなと
思うんですがよくわかりません。

 それではご指摘お願いします。

しなのむし 2000/03/13(月) 11:59:48
直接、.jpgファイルをGETしてみるとどうなりますか?

フシギダネ 2000/03/13(月) 14:32:40
>A:\home\cgi\iaa2\graph\purple_y.jpg
ここってWebサーバのDocument rootからパス通ってますか?

ふじ 2000/03/13(月) 14:37:57
A:\home\cgi が ScriptAlias されているのでは?

ScriptAlias されたディレクトリ内のファイルは、CGIとして
実行しようとするので、普通に GET する事が出来ません。

#エラーログには、jpeg ファイルをブラウザが GET しにいって、
#Apache がそれを CGI として実行しようとしている旨のエラーが
#記録されていますし。

画像は、ドキュメントルート以下のディレクトリに置きましょう。

taka 2000/03/14(火) 00:25:47
[[解決]]
>直接、.jpgファイルをGETしてみるとどうなりますか?
やはりinternal server errorになりました。

>>A:\home\cgi\iaa2\graph\purple_y.jpg
>ここってWebサーバのDocument rootからパス通ってますか?
通っていませんでした。

>A:\home\cgi が ScriptAlias されているのでは?
されていました。

以上、私の勉強不足のようでした。
Document rootからのパスを効かせ、OptionsをExecCGIにしましたら簡単に解決されました。

みなさん、どうもありがとうございました。

[上に] [前に] [次に]