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

このQ&Aのポイント
  • Apache2.2環境でPerlで参照したgifが表示できません!問題発生の原因や解決方法を解説します。
  • Windows7でApache2.2環境でPerlで参照したgifが表示できない問題について、解決方法を紹介します。
  • Apache2.2環境でPerlで参照したgifが表示できない問題について、原因と解決方法を詳しく説明します。
回答を見る
  • ベストアンサー

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

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'  この程度の情報で原因が判りますでしょうか?  よろしく、お願い致します。

  • Perl
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
  • kt_yuka
  • ベストアンサー率53% (8/15)
回答No.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だとして)

yama-6999
質問者

お礼

kt_yukaさんへ  教えて頂いたように、$gif_dir = 'http://localhost'; と書き直すことによってgif画像が正常に表示しました。本当にありがとうございました。  txtファイルが読み込めない件に関しては、もう少し私の方で勉強をして見ます。  アドバイスを頂き、ありがとうございました!

yama-6999
質問者

補足

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ファイルで何か設定ミスか漏れが有るのでしょうか?  よろしく、お願い致します。

その他の回答 (1)

回答No.1

>  $gif_dir = 'c:/Program Files/Apache Group/Apache2/htdocs'; >  ・・・・ >  <INPUT TYPE=\"image\" src=\"$gif_dir/GIF/button-fix.gif\"> 単順にパス間違いに見えます。 このソース本当に以前使って実際に動いていたそのままでしょうか?

yama-6999
質問者

補足

回答を頂き、ありがとうございました。 一応、パスは見直しましたが、正しいように思います。 間違い無く、以前の環境では動いていました。 でも、どこかに私の勘違いが有るのだと思いますが、それが判りません。 先ほど、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です。 よろしく、お願い致します。

関連するQ&A

  • apacheのDirectory指示子でわからない

    Windows2000pro,apache2.0.55です。 Directory指示子の使い方がいまいちわかりません。 あるディレクトリ(たとえばtest)にForceType指示子で強制的にMIMEを設定したいのですが、 <Directory "C:Program Files/Apache Group/Apache2/htdocs/test"> ForceType image/gif </Directory> と直接絶対パスで指定するとうまくいくのですが、 <Directory /htdocs/test> ForceType image/gif </Directory> と/からの相対パスにするとうまくいかないのです。 手元の解説書によると、Directory指示子での/とはServerRoot指示子で指定されたディレクトリを指す、とあります。 ServerRoot指示子の値は "C:Program Files/Apache Group/Apache2" となっています。 ということは <Directory /htdocs/test> という指定で <Directory "C:Program Files/Apache Group/Apache2/htdocs/test"> と同じ意味になるはずなのですが、そうはなっていないのです。 どこがまずいのでしょうか? よろしくお願いいたします。

  • apache環境におけるmod_perlのインストール

    apacheをwindows98 SEにいれて、perlを動かそうとしているのですが、うまく行きません。 成功しているかたがいらっしゃったら、方法を教えてください。 僕が試した詳細は以下の通りです。 1)ファイルをダウンロードし、dllをModuleの下にコピーをし、 C:\Program Files\Apache Group\Apache\modules\ApacheModulePerl.dll 2)httpd.confを LoadModule perl_module modules/ApacheModulePerl.dll を追加しました。 3)その後、apache コマンドを打つと、 Syntax error on line 184 of c:program files/apache group/apache/conf/httpd.conf: Cannot load c:/progrm files/aapche group/apache/modules/ApacheModulePerl.dll nto server: の様なエラーメッセージが表示されてしまい、起動しません。 #おそらくapacheを再コンパイルする必要があると思うのですが、方法がわかりません。自分でも調べている最中ですが、やられた方がいらっしゃったら教えてください。 以上、御願いします。

  • Apacheのmod_rewriteでURLの書き換え

    Apacheのmod_rewriteでURLを書き換えたいと思います。 ルートデイレクトリは"C:/Program Files/Apache Group/Apache2/htdocs"です。   そして、http://localhost/sample/ と打ったときに、"C:/Program Files/Apache Group/Apache2/htdocs/sample"ではなく、"C:/tmp/test"にアクセスされるようにするには、httpd.confにどのような設定を追加すればよいのでしょうか? Apache 2.0.63 Windows Vista

  • apache1.3とperlでCGI

    超初心者です。 windows XPでapache1.3 と active perl 5.1.2をインストールして、 CGIを動作させたいと考えています。 http://localhostを入力してapacheの起動画面は表示されていること を確認しました。 その後httpdconfに下記を追加しました。 AddHandler cgi-script .cgi .pl AddType application/x-httpd-cgi .cgi AddType application/x-httpd-cgi .pl <Directory "C:/Program Files/Apache Group/Apache/cgi-bin"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> C:\Program Files\Apache Group\Apache\cgi-binに既存で存在する printenv.plを実行しようとするとファイルのダウンロードの画面が出てきて 実行されません。printenv.plは下記のようにperl.exeへのパスだけ変更しました。 #! C:/Perl/bin/perl ## ## printenv -- demo CGI program which just prints its environment ## print "Content-type: text/plain\n\n"; foreach $var (sort(keys(%ENV))) { $val = $ENV{$var}; $val =~ s|\n|\\n|g; $val =~ s|"|\\"|g; print "${var}=\"${val}\"\n"; } どうすればCGIが実行できるようになるのでしょうか? ご教授ください。よろしくお願い致します。

    • ベストアンサー
    • CGI
  • Apacheで特定のファイルのみアクセス許可したい

    httpd.confの末尾に次の記述をしてapacheをリスタートしtop.htmlにアクセスしても 403エラーとなりアクセスできません。原因が分かる方よろしくお願いします。 <Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/aaa"> Order deny,allow Deny from all SetEnvIf REFERER localhost referer_ok Allow from env=referer_ok </Directory> <Files "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/aaa/top.html"> Order allow,deny Allow from all </Files>

    • ベストアンサー
    • HTML
  • Apache2が起動しなくなった!!

    はじめまして。さっそく質問なのですが、Apache2とPHP4の連動のために、Apacheのconfフォルダにあるhttpd.confの中身を設定通りいじって 「LoadModule php4_module c:/php/sapi/php4apache2.dll」←追加 「AddDefaultCharset none」←変更 「AddType application/x-httpd-php .php」←追加 そして、php.ini側では、 「doc_root = "c:/Program Files/Apache Group/Apache2/htdocs"」 「extension_dir = "c:/php/extensions"」←変更 でしましたが、その後、Apacheを再起動しようとするとエラーになって再起動ができなくなりました。 どなたか、なにか気になる点があれば教えて下さい!! お願いします。

    • ベストアンサー
    • PHP
  • Apacheを入れたのにローカルでCGIが動かない

    こんにちは。今CGIの勉強をしています。perlを使っているのですが、サーバーにアップする前にローカルで動作チェックをしようと思い、ApacheとActivePerlをインストールしました。 その後、Apacheを起動して、ローカルのCGIファイルにアクセスしたのですが、ページを表示できませんと出てしまいます。 ping localhostはちゃんと通ります。 環境 OS:WindowsXP HomeEdition SP2 セキュリティーソフト:無し ファイヤーウォール:解除済み Apache設定 Network Domain 127.0.0.1 Server Name   127.0.0.1 Version2.0.58 ブラウザ:IE6.0 プログラム保存先:C:\Program Files\Apache Group\Apache2\htdocs ファイル名:hello.cgi(拡張子表示有にしている。.txtなどは無い) ActivePerl:Version5.6 保存先:C:\Perl\bin(C直下) コード #!C:/Perl/bin/perl print "Content-Type: text/html\n\n"; print "<html>\n"; print "<body>\n"; print "<h1>Hello World!</h1>\n"; print "</body>\n"; print "</html>\n"; exit; 参考にしたサイト http://perl.misty.ne.jp/01.html 以上よろしくお願いします。

    • ベストアンサー
    • CGI
  • Apacheディレクトリの設置場所

    みなさん、はじめまして。yyuu5124です。 ApacheとPHP、PostgreSQLを使って、システムのプログラミングを行っております。 先日、職場でネットワークの更新が行われました。 それ以降いつものようにエディタ(秀丸)でスクリプトを書いて保存しようとすると、次のようなエラーが表示されます。 「このファイルを書き込み許可で開くことができませんでした。 ~中略~ 強制的に開きますか」 いろいろと調べていくと、どうもApacheのhtdocs配下だけがこうなります。 現在のOS環境はXPで、「C:\Program Files」配下にApacheを置いています。 「OSがVista以降なら、ApacheをProgram Files配下に置くと、アクセス拒否される」、とよくサイトに書かれています。 しかしXPの環境下でも、こんなことが起こりえますか。 やはりProgram Files以外のディレクトリに置いたほうが、無難ですか。 その場合Apacheを再設定するときの注意事項があれば、教えてください。 それともただ単にadministratorで入り、htdocs以下に権限を与えればいいことですか。 その辺があやふやで、悩んでいるところです。 ご回答のほど、よろしくお願いします。

    • ベストアンサー
    • PHP
  • windowsのapacheのhttpd.conf

    windowsのapacheのhttpd.confの書き方についての質問です。 通常windows(私は7です)にapacheをインストールすると httpd.confには DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs" と書かれていますが、前述の質問の回答で LINUXがOSの場合、スラッシュ→「?」は有効だが windowsがOSの場合バックスラッシュ→「\」に置き換えなければならない、 と私は解釈したのですが、 では、デフォルトの DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs" でApacheが正常に稼働しているようなのですが、 これって/を使ってますよね? これって、windowsがOSの場合の\のルールに反しているのに、 localhostと入力すると、it worksのhtmlが参照されるのは何故なんでしょうか? そして これを"C:\www"とCドライブの直下に置くことが出来るみたいなんですが、 ドキュメントルートの変更で\を使っても私の環境下では DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs" と同じで、この中のhtmlは読んでしまうのは何故なんでしょうか? 長文、駄文、失礼いたしました。 何分超初心者の身なので、詳しい方は「?何いってやがんだ…質問の趣旨がわからん」 と思われるかもしれませんが、拙い表現になってしまうのはお許しください。

  • 初心者 CGIがうまく表示できない hello worldが表示されない

    よろしくお願いします。 アパッチとアクティブパールはインストール済みです。(vistaです) C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\index.html で「It works!」は問題なく表示されます。 中身: <html><body><h1>It works!</h1></body></html> です。 次にCGIを表示する練習をしようと C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\perlbook というフォルダに ********************************* ファイル名:hello.cgi 中身: #!/Perl/bin/perl print << "eof"; content-type: test/html <html> <head> <title>cgi</title> </head> <body> hello world </body> </html> eof ********************************* を作り、ダブルクリックで開きましたが ブラウザには 「#!/Perl/bin/perl print << "eof"; content-type: test/html hello world eof」 が表示されます。 hello worldだけ表示されるはずだと思うのですが なぜ全てのタグが表示されてしまうのでしょうか? どこが間違っているのかご指摘よろしくお願いします。

    • ベストアンサー
    • Perl

専門家に質問してみよう