• ベストアンサー

PHPのWarningとは?

PHP超初心者です。 参考本に書いてあるとおり、以下のアクセスログを作りました。 <html> <head><title>Access Log</title></head> <body> <?php print(date("Y/m/d H:i:s")."<br/>\n"); print("<p> access log:</p>\n"); $filepointer=fopen("./log/php-accesslog","a+"); flock($filepointer,LOCK_EX); fputs($filepointer,date("Y/m/d H:i:s").$_SERVER["REMOTE_ADDR"]."\n"); flock($filepointer,LOCK_UN); rewind($filepointer); while(!feof($filepointer)){ $fileline=fgets($filepointer); print($fileline."<br/>"); } fclose($filepointer); ?> </body> </html> で、開いてみると、 2007/01/24 12:51:00 access log: というふうにアクセスログが出るのですが、そのあとに Warning: fopen(./log/php-accesslog) [function.fopen]: failed to open stream: No such file or directory in C:\Program Files\Apache Group\Apache2\htdocs\php10\accesslog.php on line 7 のような、warningがとめどなくズラーっと表示されてしまいます。 この意味と対処法がありましたらおしえてください。 よろしくお願いします。

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

  • ベストアンサー
noname#24096
noname#24096
回答No.2

もしかして $filepointer=fopen("./log/php-accesslog","a+"); の部分の意味が理解できてませんか? fopen関数は、ファイルをオープンする関数です。 http://jp2.php.net/manual/ja/function.fopen.php ファイル名を "./log/php-accesslog" で指定していますので、 カレントディレクトリ(./)の下の logディレクトリ(log/)の下に php-accesslogというファイル名で オープンしようとします。 ここでいうカレントディレクトリとは このスクリプトが置かれているディレクトリです。 "a+"が指定されているので、ファイルが無ければファイルを作ろうとします。 ただし「ファイルを作る」だけでディレクトリを作る訳ではありません。 エラー内容から判断すると、恐らくは このスクリプトが置かれているディレクトリに log というディレクトリが無いのでしょう。 (Windowsのようなのでディレクトリ=フォルダと同意です)

skipworth
質問者

お礼

ご回答ありがとうございます。 できました! logというフォルダを作っていませんでした。 おっしゃるとおり、意味がわかってませんでした。 とても勉強になりました! わかりやすいご回答ありがとうございました。

その他の回答 (1)

  • shogo0809
  • ベストアンサー率47% (25/53)
回答No.1

わかりやすく意訳すると 警告: C:\Program Files\Apache Group\Apache2\htdocs\php10\accesslog.php の7行目に $filepointer=fopen("./log/php-accesslog","a+"); と指定されたけど、そんなファイル(またはディレクトリ)は見付からないので開けませんでした。 ということです。PHPの「Warning」は「動作が中断されるほど深刻なエラーではないが、問題になりそうな処理がありますよ」という警告文で、比較的単純な英語で書いてあります。 WarningやFatal Errorが出るたびに質問していてはキリがないと思うのでご自分でエラーメッセージを読めるようになることをおすすめします。

skipworth
質問者

お礼

ご回答ありがとうございます。 読めるよう勉強します。

関連するQ&A