アプリ版:「スタンプのみでお礼する」機能のリリースについて

プログラミング経験ゼロで、CGI及びPerlを勉強しだした者です。
初歩的な質問で恐縮ですが、おわかりになる方ご教授願えますか。

open (ANSWER, ">>data.txt");
print ANSWER "$jikan,$data?n";
close (ANSWER);

open関数の箇所を上の様に書いたのですが、自動生成されるはずのdata.txtファイルが見当たりません(CGI-Executablesフォルダ内)
ではということで、data.txtファイルを作ってCGI-Executablesフォルダ内に置いてみたのですが、そちらにも書込みされませんでした。
ブラウザではフォーム入力の次に用意した「出力完了」のページに切り替わるのですが、やはり出力はされていないということでしょうか。
どのように修正すれば良いのか困ってます。よろしくお願いします。

A 回答 (1件)

パーミッションが間違っている可能性があります。



試しに、以下のように変更して実行してみてください。
open (ANSWER, ">>data.txt") || die $!."\n";
#これ以降は特に変更ありません。
#ちなみに$!は直前の標準エラー内容が入った特別な変数です。

permision denined的な文字列がありましたら、
ファイルを作成することのできないパーミッションになっております。
Mac上のCGIが動作するフォルダは、デフォルト「/Library/WebServer/CGI-Executables/」となっていますので、CGI-Executablesのパーミッションを変更すれば動くと思います。
#sudoでchmodを実行する必要があります。
#デフォルトの設定ですと、777に変更すると動くと思います。

ただ、セキュリティ面での不安もありますので、
このMacでのWeb公開はしない方がよいと思います。
#あくまでも、ご自分の勉強で使用の範疇でしたら問題ないですが、
#もしするのであれば、Apacheやセキュリティの勉強が必須となってきます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ご指摘の通り、パーミッションが間違っていたようです ^^;

早速教えていただいたように、open (ANSWER, ">>data.txt") || die $!."?n";と変えて実行してみました。
500番のエラーが出ましたがよくわからないので、CGI-Executablesのパーミッションを確認したところ、775になっていたので777に変更しました。以降正常に作動しています。

とりあえずこのマシンはスタンドアローンでいきます。
たしかにサーバーについてもっと勉強しないと無理ですね。
ありがとうございました。

お礼日時:2009/10/27 17:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!