连续使用2次fopen()函数,第一次打开失败但创建成功,警告。但为什么第2次还是会警告?

<?php
$fp = fopen("coun.txt", "r");
$fp = fopen("coun.txt", "r"); //这一行是我的试验
if (!$fp) {
    echo "coun.txt文件创建成功!";
}
$num = fgets($fp,12);  
if ($num == "") {
    $num = 0;   
}
$num++;
fclose($fp);
$fp = fopen("coun.txt", "w");
fwrite($fp, $num);
fclose($fp);
echo "您是第".$num."位浏览者!";
?>

这个是入门教材上的一个访客计数器的例子。
第一次调用fopen函数,即便是打开失败,应该也创建了文件,我又加了一遍,再让他打开一次,结果还是打开失败出现警告,并且返回false。为什么?
追加:这个问题是建立在coun.txt还未被创建,并且这个脚本第一次运行时的状况。

阅读 2.9k
1 个回答

根据你的问题描述
$fp = fopen("coun.txt", "r");
对应
第一次调用fopen函数,即便是打开失败,应该也创建了文件

如果你看的教材真是那么教你的,那么你可以考虑换一本了。

还是好好看看文档吧
http://php.net/manual/zh/func...

'r'    只读方式打开,将文件指针指向文件头。
'r+'    读写方式打开,将文件指针指向文件头。
'w'    写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'w+'    读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'a'    写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'a+'    读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

我相信
$fp = fopen("coun.txt", "a+"); 会比较适合你。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题