
超初心者からプログラムを初めて1週間、
プログラム言語にはperlを使用しています。
mac os x です。
perlの教科書読みながら、アクセスカウンタを作ろうとした所、
何故かgif画像が表示されません。
ネットの素材置き場からとってきましたが、パソコン自身、gif自体は認識してくれてます。
ただ、それをperlに組み込んで使おうとすると、表示されません。
ブラウザはfirefoxとsafariで試しましたが、両方認識してくれませんでした。
ちなみにソースは
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<HEAD><TITLE>アクセスカウンタ2</TITLE></HEAD>\n";
print " <BODY>\n";
print "<H1>test</H1><HR>\n";
if ( open ( FH , "count.txt")){
$cnt = <FH>;
close( FH );
$cnt++;
print"<CENTER>\n";
foreach $fld (split (// , $cnt)){
print "<IMG SRC=\"${fld}.gif\">";
}
print"</CENTER>\n";
if ( open(FH, ">count.txt" )){
print FH $cnt;
close(FH);
}
else {
print "ファイルの書き込みオープンに失敗しました。\n";
}
}
else {
print "ファイルの書き込みオープンに失敗しました。\n";
}
print "</BODY>\n";
print "</HTML>\n";
__END__
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
です。
テキストファイルを確認しているので、
perl 自体の活動と、アクセスのログ?自体は正常に動いているみたいです。
お願いします。
助けてください!
No.2ベストアンサー
- 回答日時:
これは、サーバーの設定の関係ですね。
そのGIFファイルをCGIと同じディレクトリに置いていませんか?
httpサーバーの設定によっては、URL上では一緒に見える CGIのディレクトリと 静的なファイルのディレクトリとが違います。Macのサーバーの初期設定では、まさにそのようになっているようです。
そのGIFファイルを WebServer > Documents に入れてみてください。
まとめると
localhost/~.cgi はCGIのアクセスと解釈され、CGI-Executables にあるファイルが実行される。
その結果の出力として出てきた locahost/~.gif は静的なファイルなので Documents にファイルを探しにいく。
ありがとう御座います!
結果としては出力を変更して、
print "<IMG SRC=\"../${fld}.gif\">"; にして
ファイルをDocmentsというフォルダに入れることで作動しました!
設定でのご意見、誠にありがとう御座います!
No.3
- 回答日時:
具体的に、カウンタ画像はどこに置いてあるのでしょうか?
それに合わせてHTML出力を設定してください。
CGIは、単に「HTMLをプログラムで生成する」ものにすぎません。
その出力をHTMLとして正しいものにするのは、CGIの問題ではなく HTMLの「Webデザイン」的な話になります。
質問者さんのコードでは、
「<IMG SRC="0.gif">」のようなHTMLデータを出力しています。
このCGIが「http://localhost/cgi-bin/count.cgi」に置いてあるのですから、
画像も同じディレクトリである「http://localhost/cgi-bin/0.gif」などでアクセスできるようにしておかないと、画像を表示できないことになります。
画像が別のフォルダに置いてあるのなら、
・画像もcgi-binフォルダに入れる
か
・画像の置き場所に合わせてHTML出力を変える
か、どちらかが必要です。
(後者は、例えば(「http://localhost/XXX/0.cgi」で画像が表示できるのなら、
HTMLデータとして「<IMG SRC="/XXX/0.gif">」とすればいいわけですから、
プログラムは「print "<IMG SRC=\"/XXX/${fld}.gif\">";」のようになります)
ありがとう御座います!
結果としては出力を変更して、
print "<IMG SRC=\"../${fld}.gif\">"; にして
ファイルをDocmentsというフォルダに入れることで作動しました!
置き場所でのご意見、誠にありがとう御座います!
No.1
- 回答日時:
まず、現状どう表示されるのですか?
このスクリプトをCGIとして実行するように、HTTPサーバーは設定できていますか?
単にfirefoxやSafariの「開く」でPerlのスクリプトを開いても、そのスクリプトがそのまま表示されるだけだと思いますが。
この回答への補足
ご回答ありがとう御座います。
現状は
test
---------------------------------------------------------------------------------------------------
□□□
と表示されます。
□にはブラウザ毎の画像が表示できないアイコンが出てます。
素人すぎて恥ずかしい話ですが、
「このスクリプトをCGIとして実行するように、
HTTPサーバーは設定できていますか?」
については、お話しされている内容がよくわかりません。ごめんなさい。
状況としては、まだ、オンライン上にはあげておらず、
自分のパソコンの中で学習しているので、
サーバー等の知識は全然無いのです。
今は、パソコンの中のHD→ライブラリ→WebServer→CGI-Executablesに入れて
実験をしています。
開くためには http://localhost/cgi-bin/count.cgi と打ってsafariやfirefoxで表示させています。
以上、ご確認の上、更なるご助言をいただければと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlのエラーについてご教授く...
-
perl このテキストファイルを簡...
-
perl の open について教えてく...
-
perlで2次元配列をサブルーチ...
-
openした後、closeしないでプロ...
-
perl 正規表現でエラー
-
Perlで、「が」を、「...
-
VBA変数をFunction.VLookupの戻...
-
perlで複数のファイルの処理に...
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
Perlで時間の計算
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パールの-pオプションの値0777...
-
登録画像のファイル名について
-
英文にしてください
-
pythonのコードで教えてください。
-
CGIでhtmlを作成するもブラウザ...
-
wait を使うのでしょうか?
-
Locationで最新の情報に更新さ...
-
特定文字+αまで照会・重複を避...
-
携帯で3キャリア対応の絵文字を...
-
自作のアクセスカウンタ
-
read関数で読み込んだ内容をフ...
-
テーブルを表示させたいのです...
-
CGI..pmを使っての画像のアップ...
-
substrについて
-
ディレクトリのファイル数取得
-
perl localhostでgifを表示する...
-
カテゴリ登録で関連させる方法
-
SUN BBSの改造方法
-
wordの数式について 定積分を書...
-
掲示板(kentさんの所のsunbbs...
おすすめ情報