You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP脚本中fopen创建的TXT文件消失,是否为使用不当?

这绝对不是正常行为,问题大概率出在文件未正确关闭或权限配置上

首先,这种“创建后FTP能看到但刷新就消失”的情况肯定不符合预期,咱们来拆解最可能的原因和解决办法:

  • 核心问题:未关闭文件指针
    你只调用了fopen()打开文件,但没有执行fclose($fp)来关闭它。PHP虽然在脚本执行结束后会自动回收资源关闭文件,但如果服务器用了FastCGI、OPcache这类持久化进程的配置,或者脚本还在运行中,文件可能只是被打开但没有完成磁盘写入——FTP看到的可能是临时的文件条目,而非真正落地的文件,刷新后自然就没了。
    修正代码很简单,一定要加上关闭操作,如果需要写入内容也别忘:

    $fp = fopen(dirname(__FILE__).'/errorlog.txt', 'w');
    // 如果你需要写入内容,先执行fwrite
    fwrite($fp, "测试日志内容");
    fclose($fp); // 这一步是关键!
    
  • 次要排查:目录权限问题
    虽然你能创建文件,但要确认dirname(__FILE__)指向的目录,PHP运行的用户(比如www-data或apache)是否有持久化的写入权限。可以在脚本里加一行检测:

    var_dump(is_writable(dirname(__FILE__))); // 输出bool(true)才是正常的
    

    另外,有些服务器会对临时生成的文件做自动清理,但这种情况比较少见,优先排查前一个问题。

  • 关于fopen模式的说明
    你用的'w'模式是完全正确的:它会创建不存在的文件,存在则清空内容,模式本身没有问题,不用怀疑这一点。

总之,先给代码加上fclose($fp),测试后应该就能解决问题了。

内容的提问来源于stack exchange,提问作者James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 18:32:45