2

我在我的页面上收到警告

警告: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);    

第 29 行

fclose($fp1);
4

3 回答 3

1

您的问题出在“if-else”语句中(文件未打开)...检查您的代码

于 2012-08-04T12:47:21.030 回答
1

当您的 if() 条件返回 false 时,没有打开 $fp 文件,因此没有什么可关闭的。PHP 不明白您要关闭什么文件,因为没有打开任何文件。

于 2016-07-03T18:13:28.677 回答
0

立即浮现在脑海中的唯一可能性是fopen由于某种原因失败,$fp设置为FALSE.

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

来自 PHP 的fopenfclose文档(稍作解释):

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

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

(我的斜体)。在尝试使用文件句柄之前,您确实应该检查返回值fopen以确保它有效。


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

而且,尽管您说它已写入文件,但您可能希望通过在开始运行之前将其删除来确认这一点。您可能只是看到以前的文件。

于 2012-08-04T12:10:46.980 回答