プロが教えるわが家の防犯対策術!

Apache2.2環境でPerlで参照したgifが表示できません!

今まで自分のPC(Windows Me)でHP(@niftyで公開しています)にアップする前のデバック環境としてApacheとActivePerlをダウンロードをして構築していました。
全く問題無く動作をしていたのですが、PCのハードが調子が悪くなりとうとう動かなくなりました。そこで、この際最新OSのWindows7版PCを購入して可能な限り同じ環境を再構築しようと努力をしているのですが、どうも上手く行かないため助けてください!

今回の環境は、OS=Windows7、Apache=2.2、ActivePer=l5.12です。
Apache=2.2のhttpd.confファイルの内容が以前のものと違うので、このhttpd.confの修正漏れだとは思うのですが・・・

具体的には、TOPページはhtmlで記述し、そのhtmlからPerlプログラムを呼び出す形を取っています。
htmlではgifが正常に表示されるのですが、同じgifをPerlからも参照をしているのですが、gifの絵が表示されません。しかしながら、gifに張ったリンクは正常で、制御は正しくリンク先に移行します。

gifファイルは、下記に在ります。
 c:/Program File/Apache Group/Apache2/htdocs/GIF/button-fix.gif

Perlプログラムは、下記のようにしています。
 $gif_dir = 'c:/Program Files/Apache Group/Apache2/htdocs';
 ・・・・
 <INPUT TYPE=\"image\" src=\"$gif_dir/GIF/button-fix.gif\">

そして、気になる事があります。
 $top = 'c:/Program Files/Apache Group/Apache2/htdocs/index.htm';
 ・・・・
 <A href=\"$top\"><IMG src=\"$gif_dir/GIF/button-fix.gif\" border=\"0\">\">
 と記述したgifアイコンにマウスを持って行くと、ウィンドウの左下のリンク先アドレスを表示するエリアに下記のように、字化け(スペースが%20になっている)しているように表示されてこのアイコンだけはクリックしても正しく動作をせず、ノンオぺレーションです。
 file:///c:/Program%20Files/Apache20Group/Apache2/htdocs/index.htm'

 この程度の情報で原因が判りますでしょうか?

 よろしく、お願い致します。

A 回答 (2件)

ローカル環境を構築しているのであれば、



$gif_dir = 'c:/Program Files/Apache Group/Apache2/htdocs';
<INPUT TYPE=\"image\" src=\"$gif_dir/GIF/button-fix.gif\">

ではなくて

$gif_dir = 'http://localhost';
<INPUT TYPE=\"image\" src=\"$gif_dir/GIF/button-fix.gif\">

になるのではないでしょうか?
(DocumentRootがc:/Program Files/Apache Group/Apache2/htdocsだとして)

この回答への補足

kt_yukaさんへ

 大変ありがとうございました。
 教えて頂いたように、$gif_dir = 'http://localhost'; と書き直すことによってgif画像が正常に表示しました。本当にありがとうございました。

 厚かましいようですが、もう1点教えて頂けないでしょうか?
 gifファイルは上記の修正で直りましたが、今度はテキストファイルが読み込めなくなりました。

<今までは>
 $quizdir = 'c:/Program Files/Apache Group/Apache2/htdocs';
 ・・・・
 ・・・・
 sub read_quiz {
local($m);
$myquiz = $select_file[$myselect];
&lock_open(QUIZ_IN, "$quizdir/TEXT/$myquiz.$quizext_in");
@quiz_in = <QUIZ_IN>;
&unlock_close(QUIZ_IN);
foreach $m (@quiz_in) { chop($m); }
 }
 で正常にtxtファイルが読み込めていましたが、gifファイルを参照したように、下記のように変更すると、今度はtxtファイルが読み込めなくなりました。
 $quizdir = 'http://localhost';

 間違い無く、c:/Program Files/Apache Group/Apache2/htdocs/TEXT/の下には abc.txt が確かにあります。

 httpd.confファイルで何か設定ミスか漏れが有るのでしょうか?

 よろしく、お願い致します。

補足日時:2010/09/20 16:07
    • good
    • 0
この回答へのお礼

kt_yukaさんへ

 教えて頂いたように、$gif_dir = 'http://localhost'; と書き直すことによってgif画像が正常に表示しました。本当にありがとうございました。

 txtファイルが読み込めない件に関しては、もう少し私の方で勉強をして見ます。

 アドバイスを頂き、ありがとうございました!

お礼日時:2010/09/26 22:27

>  $gif_dir = 'c:/Program Files/Apache Group/Apache2/htdocs';


>  ・・・・
>  <INPUT TYPE=\"image\" src=\"$gif_dir/GIF/button-fix.gif\">

単順にパス間違いに見えます。
このソース本当に以前使って実際に動いていたそのままでしょうか?

この回答への補足

回答を頂き、ありがとうございました。

一応、パスは見直しましたが、正しいように思います。
間違い無く、以前の環境では動いていました。
でも、どこかに私の勘違いが有るのだと思いますが、それが判りません。

先ほど、Apacheのerror.logを開いて見たところ、Starting thread to listen on port 80.と
正常にApacheは起動できていると思いますが、その後、私のプログラムを動作させると下記のようなエラーログが載りました。

[error] [client 127.0.0.1] defined(%hash) is deprecated at c:/Program Files/Apache Group/Apache2/cgi-bin/jcode.pl line 684.\r, referer: http://localhost/index.htm

[error] [client 127.0.0.1] \t(Maybe you should just omit the defined()?)\r, referer: http://localhost/index.htm

[error] [client 127.0.0.1] defined(%hash) is deprecated at c:/Program Files/Apache Group/Apache2/cgi-bin/jcode.pl line 693.\r, referer: http://localhost/index.htm

[error] [client 127.0.0.1] \t(Maybe you should just omit the defined()?)\r, referer: http://localhost/index.htm

そこで、jcode.plの該当行近辺を見ると下記のようでした。

683: local(*s, $n) = @_;
684: &init_z2h_euc unless defined %z2h_euc;
685: $s =~ s/($re_euc_c|$re_euc_kana)/

692: local(*s, $n) = @_;
693: &init_z2h_sjis unless defined %z2h_sjis;
694: $s =~ s/($re_sjis_c)/$z2h_sjis{$1} ? ($n++, $z2h_sjis{$1}) : $1/geo;

このエラーとgifが表示されないのとは関係が無いかも知れませんが、何かの手掛かりとなれば、ありがたいです。

ちなみに、jcode.plのバージョンは2.13です。

よろしく、お願い致します。

補足日時:2010/09/15 00:17
    • good
    • 0

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