こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

とある書籍を元にperlを学んでいます。まだ初心者で少々わかりずらい質問になってしまっているかもしれませんが、よろしくお願いします。
下記のコードがある事で Internal Server Error になってしまいます。

open(FILE,">>$logfile") or die("エラー:ログファイルが開けませんでした。");

$logfileの変数値には本日の日付 + .dat が入ります。
自分なりにいろいろ原因を探してみて、$logfileの変数値と同名のファイルをあらかじめ用意してやればエラーにはならない事がわかりました。
それから >> と書けば「対象ファイルが存在しない場合は新規作成される」と書籍には説明があるのですが、新規ファイルは作成されていませんが、>>はそのような動作にはならないものなのでしょうか?
それから、or die 以降を削除してしまえば エラーは起きませんでした。

上記コードがあるとなぜ Internal Server Error になってしまうのでしょうか?
アドバイスやご教授をよろしくお願いします。

投稿日時 - 2007-07-31 22:23:28

QNo.3216549

暇なときに回答ください

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

ディレクトリィには書き込み権限と言うのがあります。
書き込み権限には、owner、group、otherがあり
otherに書き込み権限が無いとWebから実行しても
ファイルは作成出来ない場合があります。

”同名のファイルをあらかじめ用意”とありますが
これの書き込み権限には、otherに書き込み権限があったんでは
ないのでしょうか?

投稿日時 - 2007-07-31 23:48:12

お礼

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

ありがとうございました。
大変助かりました。

投稿日時 - 2007-08-01 00:53:27

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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";
というのは入れていますよね?

投稿日時 - 2007-07-31 23:30:38

お礼

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

投稿日時 - 2007-08-01 00:57:30

あなたにオススメの質問