【问题标题】:Why is file_put_contents() sometimes throwing a "No error" error?为什么 file_put_contents() 有时会抛出“无错误”错误?
【发布时间】:2017-05-26 06:43:57
【问题描述】:

为什么这段代码有时会给出No such file or directory 警告,但有时会给出No error 警告;

<?php

file_put_contents('*bad*', 'hello world');    // Trigger illegal filename.

?>

通常会给出这个错误警告;

Warning: file_put_contents(*bad*): failed to open stream: No such file
or directory in C:\root\noerror.php on line 3

但如果我等一会再运行它,有时它会这样说;

Warning: file_put_contents(*bad*): failed to open stream: No error in
C:\root\noerror.php on line 3

有什么想法吗?

我使用的是 Windows 7、PHP 5.5.11 和 nginx 1.4.6。在我的 php.ini 中,我有;

error_reporting = E_ALL
display_errors = On
display_startup_errors = On
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
report_memleaks = On
track_errors = On
html_errors = On
error_log = php_errors.log

我认为这只是正常的默认开发错误设置,error_log 除外。

在日志文件中也会发生同样的事情 - 有时会显示 No such file or directory,有时会显示 No error

[11-Jan-2017 12:29:25 Europe/London] PHP Warning:  file_put_contents(*bad*): failed to open stream: No such file or directory in C:\root\noerror.php on line 3
[11-Jan-2017 12:29:26 Europe/London] PHP Warning:  file_put_contents(*bad*): failed to open stream: No error in C:\root\noerror.php on line 3

【问题讨论】:

  • @anant,奈杰尔在问为什么会出现不同的错误。您作为重复发布的那个只是询问如何修复错误。
  • @nigel,你检查过php错误日志是否有线索?
  • @raphael75 在我的问题的最后,有一个错误日志的摘录。
  • 因为它使用 fopen() 它可能会使用文件锁定发生冲突。
  • 有趣的是,这会在 Linux (PHP 7.0.15) 上正确创建文件。这可能是 Windows 如何处理文件名的问题。我建议你提交一个错误报告:bugs.php.net/report.php

标签: php nginx warnings file-put-contents


【解决方案1】:

尝试授予用户对所在文件夹的完全访问权限

  • 鼠标右键->属性 -安全->编辑 - 选择所有人并保存

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 2019-06-13
    • 2021-06-17
    • 2015-02-25
    • 1970-01-01
    相关资源
    最近更新 更多