
いつもお世話になっております。
今回、質問させて頂く問題と内容は以下になります。
解決したい問題
cgiから、自作した実行ファイル「create_file」を動かしファイルを作成したい。
構成は以下になります。
OS:Ubuntu 10.10
作業ディレクトリ
/var/www/cgi-bin
ファイルと機能
index.html : cgiの呼び出し用html。
create.cgi : 実行ファイル「create_file」を呼び出す。
create_file : 実行ファイル。実行すると同ディレクトリに”result.txt”を作成する。
以上の構成でindex.htmlを開いた際にcreate.cgiがcreate_fileを呼び出し、result.txtを
同ディレクトリに作成するようにしたいのですが、実現できません。
create_file単体を実行した際は、同ディレクトリにresult.txtが作成されるので、create_fileを呼び出す箇所が上手くいっていない様です。
尚、create.cgiにおけるcreate_file呼び出しを以下のようにしています。
index.html
<HTML>
<BODY>
<a href = "create.cgi">cgi呼び出し</href>
</BODY>
</HTML>
create.cgi
~~~~~~~~~~~~~~~~~~~~
chmod(0755,"./create_file");
system`./create_file`;
~~~~~~~~~~~~~~~~~~~~
情報が少なく申し訳ないのですが、問題箇所が分かる方いらっしゃいませいたら、どうぞ御教授お願い致します。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
chmod も system も失敗しても致命的なエラーにならないので、自力でエラー処理をする必要があります。
system に失敗しているようなら、当然同じプログラムからの chmod も失敗しているのではないかと思います。標準モジュールの CGI::Carp を使うと失敗の原因をブラウザの画面に表示してくれるので、原因の特定に役立つかもしれません。create.cgi
--------------------
use CGI::Carp qw(fatalsToBrowser); # 冒頭付近に追加
...
chmod(0755, "./create_file") or die "chmod error: $!";
system("./create_file") == 0 or die "system error";
>kumoz様
再度ご回答ありがとうございます。
ご指摘頂いた内容をにソースに反映させたところ、
「Software error:
system error at /var/www/cgi-bin/create.cgi line 39.
」
と表示されました。
どうやら、chmod、systemともに正常に動作していないようです。
このようなデバッグ手法は知らなかったので、非常に有難いです。ありがとうございます。
No.3
- 回答日時:
一応確認ですが。
・CGIプログラムは動いているが、ファイルが作られていない
・CGIプログラムが動いていないから、ファイルが作られない
どちらですか?
>taloo様
ご回答ありがとうございます。
>・CGIプログラムは動いているが、ファイルが作られていない
>・CGIプログラムが動いていないから、ファイルが作られない
現状態は前者となります。そのように判断しましたのは、
create.cgi内において、
~~~~~~~~~~~~~~~~~~~~
print "moge";
chmod(0755,"./create_file");
system`./create_file`;
~~~~~~~~~~~~~~~~~~~~
とした際、画面に「moge」と表示されるからです。
No.2
- 回答日時:
> chmod 755 /var/www/cgi-bin
/var/www/cgi-bin の所有者と、cgiを実行するユーザーは同じですか?
よくある設定では、httpサーバーはnobodyで動作してます。cgi-binのオーナーがnobodyでなければ、755では書き込めません。
>kmee様
ご回答ありがとうございます。
/var/www/cgi-bin の所有者と、cgiを実行するユーザーは同じですか?
現在ローカルで動かしているのですが、「cgiを実行するユーザー」という内容が知識不足の為わかりません。申し訳ないです。apacheの権限が/var/www/cgi-binの所有者と異なるということでしょうか。
追加ですが、
chmod 777 /var/www/cgi-bin とした場合でも不可でした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
httpd の1.42pで表示出来ないCG...
-
WEBサーバーのCGIエラーについて
-
EXCELファイルに誰がアクセスし...
-
《エクセルVBA》「他の人が該当...
-
FTPにて553エラー
-
KENT WEB(昨日の続きです)
-
VBAでサーバーにアクセスするに...
-
cgiからcgiを呼び出す方法
-
CGIでソースがそのままでてしま...
-
プログラミングの問題について...
-
ユーザの所属するグループを取...
-
動的URLから静的URLへのリダイ...
-
.cgi拡張子のままCGIファイルを...
-
ファイルダウンロード後に、デ...
-
SSIからCGIを起動するときのパ...
-
apache2でforbiddenになってしまう
-
perlからphpを実行して結果を得...
-
VBScriptで、ファイルから任意...
-
ログファイルを任意の順番で表...
-
ASPからJavaScriptへの受け渡し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
URLに~/cgi-bin/~を隠す方法
-
CGIゲームの設置でエラーがでます
-
パスワードアクセス制限でのCGI...
-
Rubyのcgiが動作しません。
-
AT-linkのcgiが動かない パー...
-
ダウンロードカウンタの設置
-
CGIをアップロードする方法。
-
画像のところが×になる。。
-
$ENV{'QUERY_STRING'}以外で引...
-
Perlが動作しない?
-
CGI表示されない
-
PyCharmでのCGIを使ったWebサー...
-
apeboard+の設置について (UUHP)
-
CGIにSSIカウンタをつけたい
-
apacheでCGIを動かす
-
cgiなんですが....
-
SSIで,CGIを実行するときに引...
-
apache で /cgi-bin/にアクセス...
-
ローカル環境内での絶対パス?
-
cgi-binにアクセスするとforbid...
おすすめ情報