PHP fopen的错误:"无法打开流:资源暂时不可用"

4

编辑:下面的Austin在评论中解决了我的问题。由于那就是答案,我该如何关闭问题呢?

我有以下简单的代码,用于打开/写入服务器上的查询文件。我已检查权限,甚至为查询文件的所有用户设置了+rw,但我仍然收到错误消息:

failed to open stream: resource temporarily unavailable

在我的Apache错误日志中。

我真的不知道我能做什么来缓解这个问题,请给出建议?

<?php 
// filepaths
$queryFile = '../query/query.txt';

// get query
$query = $_GET['searchBox'];

// open and write query to query file
$fh = fopen($queryFile, 'X') or die("Can't open file");
fwrite($fh, $query);
fclose($fh);

查看:file_put_contents() - Gaui
1
你确定当前的工作目录是你想要的吗?如果在 $queryFile 前面加上 dirname(__FILE__) 会发生什么? - staticsan
2
文件已经存在吗?根据PHP文档,fopen()模式x如果文件已经存在,则返回false并生成警告。- http://php.net/manual/en/function.fopen.php - Austin Brunkhorst
文件确实存在,那肯定是问题所在。谢谢! - EthanLWillis
@EthanWillis:请问Austin把这个加入答案里好吗?你也可以自己回答这个问题。 - hakre
3个回答

3

可能是以下几种情况之一:

  • PHP进程已经耗尽了内存、文件句柄或类似资源
  • PHP环境本身的限制被某种方式超出
  • 文件本身存在一些限制,例如SELinux(安全增强型Linux)限制。

为了确定具体是哪种情况,可以尝试在PHP之外打开文件。暂时修改脚本以打开另一个文件。查看脚本执行的其他操作以验证是否可能已经耗尽了文件句柄等资源。


2
< p > is_file($queryFile)is_writable($queryFile)有什么作用?也许你不在正确的工作目录中?


-1

参数'X'应该是小写字母。


这不是答案,应该是一条评论。 - cnnr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接