2012-08-04 46 views
3

我收到警告对我的网页FCLOSE警告: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'); 
    $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

您是否检查以确保文件正确打开? – 2012-08-04 12:10:15

+0

@Burhan是文件正在打开并且写入相同 – user1561466 2012-08-04 12:12:18

+0

脚本中还有其他内容吗?如果有,请尝试仅使用这些行来模拟相同的事情。另外,确保'数据。txt'实际上是写入,而不仅仅是以前的一些旧文件的实验:) – Vatev 2012-08-04 12:15:19

回答

0

立即弹簧想到的是,fopen由于某种原因失败的唯一可能性,将$fp设置为FALSE

例如,如果您不允许创建或覆盖data.txt文件(权限等),则可能发生这种情况。

fopenfclose文档PHP(略转述):

的fopen()调用成功返回文件指针资源,或错误FALSE。

fclose()的文件指针必须有效,并且必须成功指向文件由fopen()或fsockopen()打开。

(my italics)。你真的应该从fopen检查返回值,以确保它在尝试使用文件句柄之前工作。


根据您的更新代码,您应该检查其中一个请求变量(go1或go2)是否被实际设置。如果两者都不是,那么你将不会打开该文件,但你仍然会尝试关闭它。

而且,虽然您它写入文件,但您可能需要确认在开始运行之前删除它。您可能只是看到前一个文件。

+0

但文件打开并且写入相同 – user1561466 2012-08-04 12:13:04

+0

data.txt也是chmod 777 – user1561466 2012-08-04 12:14:35

+0

您应该仍然以防万一,从'fopen'(和'fwrite')检查返回代码。权限是失败的原因之一,可能还有其他原因。否则,请确认您发布的代码是_exactly_您拥有的代码(包括没有介入的内容)。我问的原因是你的代码基本上是http://www.php.net/manual/en/function.fwrite.php中的_canonical_例子,所以它不可能按原样工作。 – paxdiablo 2012-08-04 12:18:16

0

你的问题是在“的if-else”语句(文件没有打开),检查你的代码

+0

如何隐藏错误日志以显示在php页面中? – user1561466 2012-08-06 12:22:54

0

当你的,如果()条件returnes假,有没有$ fp的文件打开,没有什么关闭。 PHP不明白你想关闭什么文件,因为没有打开任何文件。

相关问题