• ベストアンサー

Internal Server Error になってしまいます。

とある書籍を元にperlを学んでいます。まだ初心者で少々わかりずらい質問になってしまっているかもしれませんが、よろしくお願いします。 下記のコードがある事で Internal Server Error になってしまいます。 open(FILE,">>$logfile") or die("エラー:ログファイルが開けませんでした。"); $logfileの変数値には本日の日付 + .dat が入ります。 自分なりにいろいろ原因を探してみて、$logfileの変数値と同名のファイルをあらかじめ用意してやればエラーにはならない事がわかりました。 それから >> と書けば「対象ファイルが存在しない場合は新規作成される」と書籍には説明があるのですが、新規ファイルは作成されていませんが、>>はそのような動作にはならないものなのでしょうか? それから、or die 以降を削除してしまえば エラーは起きませんでした。 上記コードがあるとなぜ Internal Server Error になってしまうのでしょうか? アドバイスやご教授をよろしくお願いします。

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

  • ベストアンサー
  • maura
  • ベストアンサー率46% (48/104)
回答No.2

ディレクトリィには書き込み権限と言うのがあります。 書き込み権限には、owner、group、otherがあり otherに書き込み権限が無いとWebから実行しても ファイルは作成出来ない場合があります。 ”同名のファイルをあらかじめ用意”とありますが これの書き込み権限には、otherに書き込み権限があったんでは ないのでしょうか?

thank001
質問者

お礼

mauraさん、書き込みありがとうございます。 ご指摘いただいた、フォルダのパーミッションの設定を 707 としotherにも書き込み権限を与える設定にしたところ、問題を解決する事ができました(^0^。 ありがとうございました。 大変助かりました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • leap_day
  • ベストアンサー率60% (338/561)
回答No.1

こんにちは 試してみたのですがエラーにはなりませんでした open(FILE,">>log.txt") or die("エラー:ログファイルが開けませんでした。"); とするとメモ帳アイコンで「log.txt」が作られていました open(FILE,">>$logfile") or die("エラー:ログファイルが開けませんでした。"); または open(FILE,"log.txt") or die("エラー:ログファイルが開けませんでした。"); とすればor dieが利きプログラム終了して何も表示されませんでした どれか実行できるソースで<body>内にこの1行のみで試してみてください それでもエラーになります? ならないようなら$logfileの定義がおかしいか、別の箇所かと思います この1行の前に $logfile = "***.dat"; というのは入れていますよね?

thank001
質問者

お礼

leap_dayさん、書き込みありがとうございます。 no.2さんにご指摘いただいたパーミッションの設定で、問題を解決することができました。 leap_dayさんの書き込みも参考にさせていただきました。 ご教授いただきありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A