• 締切済み

htmlで画像が表示されない

CGIを勉強し始めた者です。 手始めにCGIを使わずに画像表示をさせたところ早速つまづきました。 アドバイスお願いします。 vine linux 6.3 に apache2.4をソースからインストールしました。 /usr/local/apache2/htdocs に以下の cgi-test.html を置きました。 <html> <head> <meta http-equiv="Content-Type:" content="text/html; charset=UTF-8"> <title>CGI TEST</title> </head> <body> <h3>CGI TEST</h3> <img src="../cgi-bin/a0.gif">&nbsp;<img src="./a1.gif"> </body> </html> パーミッションは 755 root root cgi-test.html /usr/local/apache2/cgi-bin のパーミッションも 755 root root です。 ここに 数字0~9のgif画像を置いています。パーミッションは 644 root root 表示されないので/usr/local/apache2/htdocsにa0.gif, a1.gif を置いてみました。 パーミッションは 同じく 644 root root です。 数字0は表示されませんが、1は表示されます。 なぜ0が表示されないのかお教えください。

  • CGI
  • 回答数3
  • ありがとう数5

みんなの回答

回答No.3

もしかして、DocumetRoot(/usr/local/apache2/htdocs) に置いた gifなら表示できるのに cgi-binの下においたgifだと、HTMLでそのパスを指定しているのに表示できないのは、なぜか という疑問でしょうか? だとしたら、まずはapache2の設定ファイルの ScriptAlias /cgi-bin ~ の記載を確認されて下さい。 もし、ScriptAlias /cgi-bin ~ の設定がないなら cgi-bin/*gifを指定したときの ファイルを置くべき物理パスは /usr/local/apache2/cgi-binではなく DocumentRootしたのcgi-bin (/usr/local/apache2/htdocs/cgi-bin) に なります。 また、 ScriptAlias /cgi-bin /var/www/cgi-bin とか ScriptAlias /cgi-bin /usr/lib/cgi-bin になっていたり、 一応は、ScriptAlias /cgi-bin /usr/local/apache2/cgi-binと設定しているが 別のconfigファイルがあって、そっちで設定が上書きされているということもあり得ます。 この場合は、/usr/local/apache2/cgi-binとなるように、設定を変更する必要があります。

junh1109
質問者

お礼

アドバイスありがとうございました。 DocumentRootより上位のDirectoryを指定している ことに気づいておりませんでした。 おかげさまでCGIの勉強が進みます。

  • t_ohta
  • ベストアンサー率38% (5076/13261)
回答No.2

a0.gif と a1.gif のパスが違いますが、別々のディレクトリに置いているのですか? もし、同じディレクトリに置いているのであれば、a0.gif のパスを修正しましょう。

junh1109
質問者

お礼

アドバイスありがとうございました。 DocumentRootより上位のDirectoryを指定している ことに気づいておりませんでした。 おかげさまでCGIの勉強が進みます。

  • bardfish
  • ベストアンサー率28% (5029/17765)
回答No.1

a0.gifがcgi-binフォルダにあると指定されていますが? a1.gifと同じフォルダにあるんですよね? だったら./a0.gifとすればいいだけだと思いますけど。

junh1109
質問者

お礼

アドバイスありがとうございました。 DocumentRootより上位のDirectoryを指定している ことに気づいておりませんでした。 おかげさまでCGIの勉強が進みます。

関連するQ&A

  • cgi(perl)でパラメータが渡せない

    以下のプログラムでnum=9が伝わらないので、ミスをご指摘ください。 グラフィカルなアクセスカウンタを表示させようとしていますが うまくいかないのでテキストモードでデバッグしています。 [ /usr/local/apache2/htdocs/gif-view.html ] <html> <head> <meta http-equiv="Content-type:" content="text/html; charset=UTF-8"> <title>gif-view</title> </head> <body> <iframe src="/cgi-bin/gif-test.cgi?num=9"></iframe> <!-- <img src="/cgi-bin/gif-test.cgi?0" width=50 height=50> --> </body> </html> [ /usr/local/apache2/cgi-bin/gif-view.cgi ] permission は 755 にしています。 #!/usr/bin/perl print "Content-Type: text/plain;\n\n"; print "gif-test.cgi\n"; $prm0 = @ARGV[0]; if($prm0 = "") { print "Param is exist\n"; } else { print "Param is empty\n"; 実行結果として gif-test.cgi Param is empty となります。 httpd.conf で Script Alias /cgi-bin/ "/usr/local/apache2/cgi-bin/" を有効にしています。

    • ベストアンサー
    • Perl
  • PHP+ImageMagick

    exec("/usr/bin/convert -geometry 30x30 /usr/local/apache/htdocs/a/img/test.gif /usr/local/apache/htdocs/a/img/test2.jpg"); 上記プログラムをphp内に書く事によりimgフォルダ内にtest2.jpgが生成されるという認識は間違いでしょうか?エラーも出ませんが、新規画像も作成されません。

    • ベストアンサー
    • PHP
  • 絶対パスでしか画像が表示されません。

    自分の端末(windows2000)にApacheをインストールしてCGIを作製しています。 IEでCGI(http://localhost/cgi-bin/xxx/xxx.cgi)を起動して 画像(c:/apache group/apache/cgi-bin/xxx/icon/xxx.gif)を 表示させたいのですが、<img src='★'>タグの★部分が 絶対パス(c:/apache group/apache/cgi-bin/xxx/icon/xxx.gif)だと 表示されますが、相対パスなど他だと表示されません。 どのような形式にしたら表示できるでしょうか? それともc:/apache group/apache/cgi-bin/配下にある画像は 表示できないのでしょうか? ※画像をIEでURL(http://localhost/cgi-bin/xxx/icon/xxx.gif)で  表示させようとしたところできませんでした。 ・IE確認用URL  http://localhost/cgi-bin/xxx/xxx.cgi ・CGIファイル  c:/apache group/apache/cgi-bin/xxx/xxx.cgi ・画像ファイル  c:/apache group/apache/cgi-bin/xxx/icon/xxx.gif ・Apacheのドキュメントルート  c:/apache group/apache/htdocs

    • ベストアンサー
    • HTML
  • 画像ファイルが崩れる

    Perlで、CGIを作成しています。 GIF画像をCGI経由で表示させようと思っているのですが、なぜか、画像が崩れてしまいます。GIFだけではなく、Jpegでも同じです。しかし、HTMLファイルの <img>タグでそのまま表示させようとすると、きちんと表示します。 どのようにすれば、崩れを抑えられますか? CGIソース---------------------- #!/usr/local/bin/perl $imgsrc="number/0.gif"; print "Content-type:image/gif\n\n"; open(IMG,$imgsrc); binmode(IMG); print <IMG>; close(IMG); -----------------------------EOF HTML---------------------------- <html> <head> </head> <body> <img src="cgi/image.cgi" width="28" hegiht="31"> </body> </html> ------------------------------EOF gif画像は、 http://www.akikobrand.com/icon/img/10/6/0.gif を使わせていただきました。(個人的な使用です)

    • ベストアンサー
    • CGI
  • Webでgif画像が表示されません。

    基本的なことだと思いますが、教えてください。 http://www.cgi-down.com/cgi/g_counter.php 上のCGIのカウンターをためしに設置しようとしてみて 画像が×印で表示されてうまくいかず、以下のようにindex.htmlに <img src="../cgi-bin/image/0.gif"> <img src="127.0.0.1/cgi-bin/image/0.gif"> などと実際にGIF画像を表示させてみようとしたのですがそれでもうまくいきません。 場所は以下のようになっていて Linux上のファイラー上ではGIF画像は正しく表示されています。 # ls /var/www/html/index.html /var/www/html/index.html # ls /var/www/cgi-bin/image/ 0.gif 1.gif 2.gif 3.gif 4.gif 5.gif 6.gif 7.gif 8.gif 9.gif Thumbs.db httpd.confでは ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" としておりExecCGIも有効にしています。 よければ教えてください。

  • 画像が表示されません

    Perlを勉強はじめたばかりの初心者です。 print "テスト画像<BR><IMG SRC=\"test.gif\">"; というcgiをブラウザで見ると、「テスト画像」という文字は表示されるのですが、画像は×になってしまいます。 画像はcgiと同じ階層にあります。 環境はMac OSX(10.28)でパーソナルwebをオンにしてローカルでテストしています。 宜しくお願いします。

    • ベストアンサー
    • CGI
  • sendmailからqmail:CGIから送れない

    こんばんわ。 sendmailコマンド置換えについてです。 OS:Fedora7 メールサーバー:qmailとdovecot vpopなど使ってます。 メールサーバーについては、 バーチャルでもローカルからは送受信出来てます。 cgiがユーザーさんがHPのcgiからメールを送って来ると、 内容を自動返信するような感じのcgiですが。 テストでやってみても。 ローカルの受信すら来ない状態です。 もちろん、自動返信で返っても来ません。 以下をしました。 chmod 0 /usr/lib/sendmail chmod 0 /usr/sbin/sendmail mv /usr/lib/sendmail /usr/lib/sendmail.bak mv /usr/sbin/sendmail /usr/sbin/sendmail.bak ln -s /var/qmail/bin/sendmail /usr/lib/sendmail ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail apacheのエラーは、 sh: /usr/sbin/sendmail: Permission denied, referer: http://www.hogehoge.com/cgi-bin/test.cgi Permission関係でしょうか? sendmailをls -lで調べると lrwxrwxrwx 1 root root 23 Jun 5 19:05 /usr/sbin/sendmail -> /var/qmail/bin/sendmail です。 その他調べる箇所ありますでしょうか? 後・・・ 私のサーバーでは、 newaliases とすると・・・ bash: /usr/bin/newaliases: Permission denied になります。 パーミッションは777のroot rootになってます。 宜しくお願いします。

  • 画像が表示できません。

    print "Content-type: image/gif\n\n"; open(IMG,"./1.gif"); $img =(IMG); close(IMG); print $img; 画像ファイル "http://0.0.0.0/a.cgi" は壊れているため、表示できませんでした。 となり表示ができません。

    • ベストアンサー
    • Perl
  • カウンターの画像が表示されない

    無料カウンターの画像が「×」になります perlパスはusr/bin/perlです。 indexと同じ階層にdaycounterのフォルダをおきました。パーミッションはサーバーの方が HTML画像ファイル604 CGI実行ファイル700 CGIデータファイル600 .htaccessファイル604 ディレクトリ705 index.html ┃ daycounterフォルダ(755)   ┃   img1フォルダ(701)━gif画像(604)   ┃   img2フォルダ(701)━gif画像(604)   ┃   cgi-lib.pl(600)   ┃   counter.html(604)←使用しないそうです   ┃   daycounter.cgi(700   ┃   daycounter.dat(600)   ┃   gifcat.pl(600) そこのapeboardの設置を参考にしました。 http://www.lolipop.jp/?mode=faq&state=detail&genreid=6&faqid=000120 imgフォルダだけバイナリで転送してあります。 カウンターのソースは <IMG src="http://127.0.0.1/yoshi/public_html/free_cgi/counter/daycounter/daycounter.cgi?mode=total"><P> 本日:<IMG align="absmiddle" src="http://127.0.0.1/yoshi/public_html/free_cgi/counter/daycounter/daycounter.cgi?mode=today">  昨日:<IMG align="absmiddle" src="http://127.0.0.1/yoshi/public_html/free_cgi/counter/daycounter/daycounter.cgi?mode=yesterday"> です。

    • ベストアンサー
    • CGI
  • Perlと画像について

    やまとです。 CGIから、画像を呼び出しています。  CGIファイル:Apache/cgi-bin/test.cgi  画像ファイル:Apache/cgi-bin/image/test.gif  test.cgiでの画像呼出部分:<image src=./test.gif> しかし、画像が出てきません。なぜでしょう? 自分なりに調べてみましたが、大分原因が分かってきました。 error.log見てみると、 c:/apache/cgi-bin/test.jpg is not executable; ensure interpreted scripts have "#!" first line couldn't spawn child process: c:/apache/cgi-bin/top_image.jpg と言うエラーでした。 どうやら、画像ファイルをCGIスクリプトとして見てしまっているようです。 (↑考え合ってますよね) おそらく、httpd.confがおかしい(?)Aliaseですかね(?) ここまで調べてみましたが、対処方法がわかりません。 どなたか、どこを、どう直せば良いのか、 出来るだけ詳しくご教授願えないでしょうか? 宜しくお願いします。

    • ベストアンサー
    • Perl

専門家に質問してみよう