2009-11-26 112 views
3

我有一个PHP脚本停止处理(它似乎是)在PHP警告。错误是一般的“PHP警告:fopen” - “无法打开流:没有这样的文件或目录”。PHP脚本停止处理警告错误?

PHP应该停在这里吗?我只想过致命的错误?

有没有办法让它继续?

+0

你有没有检查过你的PHP版本真的救了出警告?尝试一个只包含'<?php fopen('doesnotexist','rb')的新脚本;回声',如果你可以读这个...';' – VolkerK 2009-11-26 10:00:49

+0

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

+0

我在全新安装时遇到同样的问题; PHP预处理脚本,当它发出通知时,它将它们转储到输出缓冲区,但显然不执行任何代码? – Matth3w 2016-03-03 06:54:29

回答

1

是的,它应该如果error_reporting()水平足够低。

是的,有。 fopen导致华林,这样前加 “@”:@fopen(...)

-1

即使继续,该程序很可能不会按照它的意图工作。无论如何,尝试处理异常:

try { 
    # code that may cause an error 
} 
catch(Exception $e) { 
    # do error handling mechanism 
} 
+0

... – mauris 2009-11-26 09:53:47

+0

其实脚本应该继续,并且可以在没有该文件的情况下执行 - 我还没有写得很好,但是我只是希望它继续,如果它没有找到某些文件 – Abs 2009-11-26 09:54:48

0

除了什么康拉德迈耶已经从PHP手册中提到:在错误

$fres = @fopen('file.ext','w+'); 
if($fres){ 
    // so anything you want with the file 
} 

fopen返回false。当在fopen上抑制错误并且不使用if($fres)时,随后的文件操作函数将发出错误,指出$fres不是有效的文件句柄。

2

发出警告,但脚本执行继续。脚本停止的事实更可能与您之后尝试执行的处理有关,但与警告本身无关。

以前的建议使用file_exists和is_readable是一个很好的建议。

+0

它也可以是特殊的配置设置。看到我对这个问题的评论。 – 2016-02-19 23:23:21