我有一个PHP脚本停止处理(它似乎是)在PHP警告。错误是一般的“PHP警告:fopen” - “无法打开流:没有这样的文件或目录”。PHP脚本停止处理警告错误?
PHP应该停在这里吗?我只想过致命的错误?
有没有办法让它继续?
我有一个PHP脚本停止处理(它似乎是)在PHP警告。错误是一般的“PHP警告:fopen” - “无法打开流:没有这样的文件或目录”。PHP脚本停止处理警告错误?
PHP应该停在这里吗?我只想过致命的错误?
有没有办法让它继续?
不知道如何继续的错误,但更好的事情是错误的预防摆在首位:
'is_readable'和'is_writable'在Windows系统上被破坏得很厉害,我认为它也是在ACL上。仅在PHP 5中使用 – 2009-11-26 09:54:46
是的,它应该如果error_reporting()水平足够低。
是的,有。 fopen
导致华林,这样前加 “@”:@fopen(...)
As noted on the php documentation page,
如果打开失败,会产生一个E_WARNING级的错误。您可以使用@来抑制此警告。
除了什么康拉德迈耶已经从PHP手册中提到:在错误
$fres = @fopen('file.ext','w+');
if($fres){
// so anything you want with the file
}
fopen
返回false。当在fopen上抑制错误并且不使用if($fres)
时,随后的文件操作函数将发出错误,指出$fres
不是有效的文件句柄。
发出警告,但脚本执行继续。脚本停止的事实更可能与您之后尝试执行的处理有关,但与警告本身无关。
以前的建议使用file_exists和is_readable是一个很好的建议。
它也可以是特殊的配置设置。看到我对这个问题的评论。 – 2016-02-19 23:23:21
你有没有检查过你的PHP版本真的救了出警告?尝试一个只包含'<?php fopen('doesnotexist','rb')的新脚本;回声',如果你可以读这个...';' – VolkerK 2009-11-26 10:00:49
OP是正确的,PHP不会停止报告或显示警告。唯一的配置,除了使用特殊的处理程序,请参阅http://stackoverflow.com/questions/10520390/stop-script-execution-upon-notice-warning,我知道这可以做到这一点与Xdebug。如果你安装了xdebug模块,并且'xdebug.halt_level'包含'E_WARNING',那么PHP将停止系统警告。当然,我们想删除警告,但系统不应该停止它们,除非我们想要。所以,答案是OP应该检查他的配置设置。 – 2016-02-19 23:15:41
我在全新安装时遇到同样的问题; PHP预处理脚本,当它发出通知时,它将它们转储到输出缓冲区,但显然不执行任何代码? – Matth3w 2016-03-03 06:54:29