WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:html ファイルから起動されるCGI

0:[投稿] 彪子 [2006/03/12 18:46 ] [環境:IE6,WIN98 UNIX,Apache,CGI,perl ]

お世話になっております。どうかよろしくお願いいたします。

普通の、アドレスバーからURLを入力して起動するCGIは作成した経験がありますが、次のようなCGIをどうやって実現したらいいのか、教えていただきたいのです。

(1) A という html が開くと自動的に B というCGIが起動される。
(2) B は、B と同一ディレクトリにある、file_a.jpg のファイル名を file_b.jpg に変更する。
(3) B の実行結果は直接 A の表示する内容に反映されなくてもいい。

これを実現するために、ある人から

<img src="b.cgi">

というタグを使うやりかたを教わってやってみました。その経緯を説明させていただきます。

次のような b.cgi を用意します。

<!-- ここから -->

#!/usr/local/bin/perl
use strict;
my $before = "file_a.jpg";      #変換前の名前
my $after = "file_b.jpg";       #変換後の名前
my $dummy = "a.jpg";    #ダミーとして表示する画像

rename($before,$after);
print "Content-type: image/jpeg\n\n";
open(IMG,"$dummy");
binmode(STDOUT);
print <IMG>;
close(IMG);
exit;

<!-- ここまで -->

そして、

http://cgi.niji.jp/home/ashizuka/b/

というディレクトリに

(ア) b.cgi
(イ) file_a.jpg
(ウ) a.jpg

の3つのファイルをアップしました。
そして、

http://cgi.niji.jp/home/ashizuka/index.html

という html ファイルに、

<IMG SRC="http://cgi.niji.jp/home/ashizuka/b/b.cgi">

というタグを挿入して (ア) を実行したつもりでしたが、ファイル名は変更されませんでした。なお、これを教えてくれた人はローカルやって成功したようです。
以上読んでいただいて、何かおわかりになることがありましたら、お教えいただければ幸いです。どうかよろしくお願いいたします。


1:[回答] miz [2006/03/12 21:39 ]

ローカルで成功して、unixサーバーで成功しないのなら、
ファイルやディレクトリーのパーミッションとかが問題なのでは?

また、成功しない内容も、エラーが出ているのか、
エラーもなく完了(画像表示)しているけどrenameだけうまくいってないのか?
そもそも、perl呼び出し出来てないとか?


2:[質問] 彪子 [2006/03/16 01:27 ]

miz 様、ありがとうございます。ご返事が遅れて申し訳ありません。
教えていただいたとおり、パーミッションについて色々試して、解決できなかったので、半ばあきらめかけていましたが、ファイルやCGI の入ったフォルダのパーミッションを 757 にすることによってファイル名の変更ができるようになりました(757 にする前も実行はしていたように見えます)。しかし、パーミッションがこれでいいのかどうか自信がありません。現在のパーミッションは次のようにしていますが、これで適切でしょうか。

(ア) b.cgi               : 757
(イ) file_a.jpg             : 755
(ウ) a.jpg (ダミー)           : 757
(エ) b(ア 〜 ウが存在するディレクトリ): 757

特にフォルダ(ディレクトリ)のパーミッションを、他人に対して読み込み、書き込み、実行のいずれも可とする以外にないのでしょうか。すみませんが、どうかよろしくお願いいたします。


3:[回答] 通りがかり。 [2006/03/16 21:09 ]

パーミッションは、サーバの仕様によって異なります。
プロバイダーの説明書きなり、サポートに質問を投げて下さい。
だいたい、このような説明が無い方が不思議だから、知らないわけが
無いはずです。

回答(必須): 状態:

お名前(必須):

URL:




[戻る]