【发布时间】: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