Php fclose警告:fclose():提供的参数不是有效的流资源
我在我的网页上得到了警告 警告:fclose():提供的参数不是有效的流资源 使用以下代码Php fclose警告:fclose():提供的参数不是有效的流资源,php,fopen,fwrite,fclose,Php,Fopen,Fwrite,Fclose,我在我的网页上得到了警告 警告: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');
$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...';
第29行
fclose($fp1);
唯一能立即想到的可能是
fopen
由于某种原因失败,将$fp
设置为FALSE
例如,如果不允许您创建或覆盖data.txt
文件(权限等),可能会发生这种情况
从PHP的fopen
和fclose
文档中(稍作解释):
fopen()调用成功时返回文件指针资源,错误时返回FALSE
fclose()的文件指针必须有效,并且必须指向由fopen()或fsockopen()成功打开的文件
(我的斜体)。在尝试使用文件句柄之前,您确实应该检查fopen
中的返回值,以确保它工作正常
根据更新的代码,您应该检查其中一个请求变量(go1或go2)是否已实际设置。如果两者都不是,则不会打开该文件,但仍将尝试关闭它
而且,尽管您说它写入了文件,但您可能希望在开始运行之前删除它来确认这一点。您可能只是看到了上一个文件。您的问题在于“if-else”语句(文件未打开)。。。检查代码当if()条件返回false时,没有打开$fp文件,因此没有要关闭的内容。PHP不明白您要关闭的文件是什么,因为没有打开任何文件。您检查了文件是否正确打开了吗?@Burhan是的,文件正在打开并写入sameIs脚本中还有其他内容吗?如果有,试着用这些线来模拟相同的东西。此外,请确保“data.txt”实际上是写入的,而不仅仅是以前实验中的一些旧文件:)@Vatev我已经更新了代码,请注意,但是文件正在打开并写入相同的内容。您仍然应该检查
fopen
(顺便说一下,fwrite
)中的返回代码,以防万一。权限是失败的原因之一,可能还有其他原因。否则,请确认您发布的代码与您所拥有的代码完全一致(包括没有干预的内容)。我询问的原因是,您的代码基本上是按照的标准示例,因此它不可能按原样工作。@user1561466:有一个代码路径,您不打开文件,但试图关闭它-请参阅更新。我已检查了编写的文件,并确认文件正在打开,并且希望代码已写入其中
fclose($fp1);