電子書籍の厳選無料作品が豊富!

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がとめどなくズラーっと表示されてしまいます。

この意味と対処法がありましたらおしえてください。
よろしくお願いします。

A 回答 (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のようなのでディレクトリ=フォルダと同意です)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
できました!
logというフォルダを作っていませんでした。

おっしゃるとおり、意味がわかってませんでした。
とても勉強になりました!

わかりやすいご回答ありがとうございました。

お礼日時:2007/01/24 16:58

わかりやすく意訳すると



警告:
C:\Program Files\Apache Group\Apache2\htdocs\php10\accesslog.php の7行目に
$filepointer=fopen("./log/php-accesslog","a+");
と指定されたけど、そんなファイル(またはディレクトリ)は見付からないので開けませんでした。

ということです。PHPの「Warning」は「動作が中断されるほど深刻なエラーではないが、問題になりそうな処理がありますよ」という警告文で、比較的単純な英語で書いてあります。

WarningやFatal Errorが出るたびに質問していてはキリがないと思うのでご自分でエラーメッセージを読めるようになることをおすすめします。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

読めるよう勉強します。

お礼日時:2007/01/24 16:59

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