
いつもお世話になっております。
今回、質問させて頂く問題と内容は以下になります。
解決したい問題
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...
-
EXCELファイルに誰がアクセスし...
-
《エクセルVBA》「他の人が該当...
-
FTPにて553エラー
-
htaccessを教えて下さい。
-
VBAでサーバーにアクセスするに...
-
CGIが読み書きするデータファイ...
-
SSIの『#exec cmd』と『#exe...
-
インターネット一時ファイルを...
-
cgi-binのディレクトリの作成方法
-
VBScriptで、ファイルから任意...
-
アプリケーションサーバについ...
-
DiaryCGI nicky! について 新し...
-
CGIが実行されずにダウンロード...
-
perlからJavascriptを起動
-
cgiでの文字化け
-
USTREAMのような動画配信システ...
-
文字参照「#」を含むURI 正しく...
-
カタカナを英語やフランス語に...
-
画像アップ時のエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
URLに~/cgi-bin/~を隠す方法
-
httpd の1.42pで表示出来ないCG...
-
SSIで,CGIを実行するときに引...
-
WEBサーバーのCGIエラーについて
-
CGIが動作しません。
-
PyCharmでのCGIを使ったWebサー...
-
相対パスか絶対パス??
-
apache で /cgi-bin/にアクセス...
-
CGIにSSIカウンタをつけたい
-
EXCELファイルに誰がアクセスし...
-
KENT WEB(昨日の続きです)
-
《エクセルVBA》「他の人が該当...
-
CGIでソースがそのままでてしま...
-
FTPにて553エラー
-
ASPから既存のexcelブックを開...
-
VBAでサーバーにアクセスするに...
-
VBScriptで、ファイルから任意...
-
ApacheでのCGIについての質問
-
ラジオボタンのグループ化
-
CGIが実行されずにダウンロード...
おすすめ情報