• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:open関数のファイル操作について)

open関数のファイル操作について

このQ&Aのポイント
  • プログラミング経験ゼロで、CGI及びPerlを勉強しだした者です。
  • open関数の箇所を上の様に書いたのですが、自動生成されるはずのdata.txtファイルが見当たりません(CGI-Executablesフォルダ内)
  • ブラウザではフォーム入力の次に用意した「出力完了」のページに切り替わるのですが、やはり出力はされていないということでしょうか。どのように修正すれば良いのか困ってます。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • diszo
  • ベストアンサー率78% (32/41)
回答No.1

パーミッションが間違っている可能性があります。 試しに、以下のように変更して実行してみてください。 open (ANSWER, ">>data.txt") || die $!."\n"; #これ以降は特に変更ありません。 #ちなみに$!は直前の標準エラー内容が入った特別な変数です。 permision denined的な文字列がありましたら、 ファイルを作成することのできないパーミッションになっております。 Mac上のCGIが動作するフォルダは、デフォルト「/Library/WebServer/CGI-Executables/」となっていますので、CGI-Executablesのパーミッションを変更すれば動くと思います。 #sudoでchmodを実行する必要があります。 #デフォルトの設定ですと、777に変更すると動くと思います。 ただ、セキュリティ面での不安もありますので、 このMacでのWeb公開はしない方がよいと思います。 #あくまでも、ご自分の勉強で使用の範疇でしたら問題ないですが、 #もしするのであれば、Apacheやセキュリティの勉強が必須となってきます。

ameto8
質問者

お礼

回答ありがとうございます。 ご指摘の通り、パーミッションが間違っていたようです ^^; 早速教えていただいたように、open (ANSWER, ">>data.txt") || die $!."?n";と変えて実行してみました。 500番のエラーが出ましたがよくわからないので、CGI-Executablesのパーミッションを確認したところ、775になっていたので777に変更しました。以降正常に作動しています。 とりあえずこのマシンはスタンドアローンでいきます。 たしかにサーバーについてもっと勉強しないと無理ですね。 ありがとうございました。

関連するQ&A