【问题标题】:PHP fopen() does not create a filePHP fopen() 不创建文件
【发布时间】:2012-10-05 12:45:10
【问题描述】:

根据fopen documentation,在某些模式下,如果文件不存在,它会创建文件,但在我的情况下,我检查了所有的“w”、“w+”、“x”和“x+”模式,但是它只是向我发出警告,它无法创建文件。

这是我的代码:

$this->handle = fopen($this->log_name, 'w');

我得到了什么:

Warning: fopen(D:\xampp\htdocs\farid\logs\error.php) [function.fopen]: failed to open stream: No such file or directory in D:\xampp\htdocs\farid\libraries\error\log.php on line 34
Warning: fwrite() expects parameter 1 to be resource, boolean given in D:\xampp\htdocs\farid\libraries\error\log.php on line 66
Warning: fclose() expects parameter 1 to be resource, boolean given in D:\xampp\htdocs\farid\libraries\error\log.php on line 27

我在windows环境下工作。

【问题讨论】:

  • 文件权限是最明显的嫌疑人
  • 来自同一个文档 - “如果 PHP 决定文件名指定一个本地文件,那么它将尝试在该文件上打开一个流。该文件必须可供 PHP 访问,因此您需要确保文件访问权限允许此访问。如果您启用了安全模式,或者 open_basedir 可能会应用进一步的限制。"
  • 你能添加更多代码吗?可能在您当前代码上方的 1-2 行出错了。
  • 首先该文件夹必须已经存在。如果是,请确保它是可写的。
  • @anyber 是的,目录存在

标签: php fopen


【解决方案1】:

检查日志文件的路径是否存在,它创建一个文件,而不是一个目录。

还要检查运行 xampp 的用户是否有权访问您指定的文件夹。

【讨论】:

  • 感谢您的帮助,我的目录名称有误。现在它正在创建文件。如果我的功能中不存在该文件夹,有什么方法可以创建该文件夹吗?
  • 检查php.net/manual/en/function.mkdir.php检查参数部分寻找“递归”,首先你必须检查文件是否存在,realpathfile_exists可能会有所帮助
  • “它创建的是一个文件,而不是一个目录”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-26
  • 2014-06-27
  • 2011-02-03
  • 2013-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多