首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fclose警告: fclose():提供的参数不是有效的流资源

fclose警告: fclose():提供的参数不是有效的流资源
EN

Stack Overflow用户
提问于 2012-08-04 12:08:48
回答 3查看 18.4K关注 0票数 2

我在我的页面上收到警告

警告: fclose():提供的参数不是有效的流资源

使用以下代码

代码语言:javascript
复制
$fp = fopen('data.txt', 'w');
$write = '2';
fwrite($fp, $write);
fclose($fp);  

更新代码

代码语言:javascript
复制
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行的错误

代码语言:javascript
复制
fclose($fp);    

line29

代码语言:javascript
复制
fclose($fp1);
EN

回答 3

Stack Overflow用户

发布于 2012-08-04 12:47:21

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

票数 1
EN

Stack Overflow用户

发布于 2016-07-03 18:13:28

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

票数 1
EN

Stack Overflow用户

发布于 2012-08-04 12:10:46

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

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

来自PHP的fopenfclose文档(略为改写):

fopen()调用在成功时返回文件指针资源,在错误时返回FALSE。 fclose()的文件指针必须有效,并且必须指向由fopen()或fsockopen()成功打开的文件。

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

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

而且,尽管您说它是写到文件中的,但是您可能希望在开始运行之前删除它来确认这一点。你可能只是看到了之前的文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11808551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档