我在网页上收到警告
警告:fclose():提供的参数不是有效的流资源
使用以下代码
$fp = fopen('data.txt', 'w');
$write = '2';
fwrite($fp, $write);
fclose($fp);
更新代码
if(isset($_REQUEST['go1']))
{
$fp = fopen('data.txt', 'w');
$write = '1';
$fp1 = fopen('file.php', 'w');
$write1 = '<br><img src="/1/online.png" style="position:absolute; z-index:-2;" />';
}
if(isset($_REQUEST['go2']))
{
$fp = fopen('data.txt', 'w');
$write = '2';
$fp1 = fopen('file.php', 'w');
$write1 = '<br><img src="/1/offline.png" style="position:absolute; z-index:-2;" />';
}
fwrite($fp, $write);
fclose($fp);
fwrite($fp1, $write1);
fclose($fp1);
$fp = fopen('data.txt', 'r');
$contents = fread($fp, filesize('data.txt'));
fclose($fp);
if($contents == '1')
include('file.php');
else if($contents == '2')
include('file.php');
else
echo 'Something else...';
在第27行和第29行获取错误 第27行
fclose($fp);
line29
fclose($fp1);
答案 0 :(得分:1)
您的问题出在“if-else”语句中(文件未打开)...检查您的代码
答案 1 :(得分:1)
当你的if()条件返回false时,没有打开$ fp文件,因此无法关闭。 PHP无法理解您要关闭的文件,因为没有打开任何内容。
答案 2 :(得分:0)
唯一可能出现的可能性是fopen
由于某种原因失败,$fp
设置为FALSE
。
例如,如果您不允许创建或覆盖data.txt
文件(权限等),则可能会发生这种情况。
来自PHP的fopen
和fclose
文档(稍微解释):
fopen()调用在成功时返回文件指针资源,如果出错则返回FALSE。
fclose()的文件指针必须有效,并且必须指向由fopen()或fsockopen()打开的成功文件。
(我的斜体)。你真的应该检查fopen
的返回值,以确保它在尝试使用文件句柄之前有效。
根据您更新的代码,您应该检查其中一个请求变量(go1或go2)是否已实际设置。如果两者都没有,那么你将无法打开文件,但你仍然会尝试关闭它。
而且,虽然你说它写入文件,你可能想要在开始运行之前删除它来确认。你可能只是看到了以前的文件。