这是一个简单的问题,一小时的谷歌搜索似乎无法解决。你如何捕获PHP中的失败包含?对于以下代码:
try {
include_once 'mythical_file';
} catch (Exception $e) {
exit('Fatal');
}
echo '?';
mythical_file不存在,我得到输出'?'。我知道PHP无法捕获失败,因为它触发了警告错误,但是在这里?捕获失败的包含的最佳方法是什么?例如,以下工作:
(include_once 'unicorn') or exit('!');
但它不会触发异常,因此我无法检索文件,行和堆栈上下文。
答案 0 :(得分:2)
您可以使用require_once
代替include_once
答案 1 :(得分:1)
include和include_once触发警告(E_WARNING),require和require_once触发错误(E_COMPILE_ERROR) 。因此,您应该使用require
或require_once
。
php.net引用:
“require()与include()相同 除非失败,它也会 产生致命 E_COMPILE_ERROR级别 错误。换句话说,它会停止 脚本而仅包含() 发出警告(E_WARNING) 允许脚本继续。 “