这正在工作,然后停止了。那是最新的版本7.2.6。
if(!@include_once('config.php')) {
echo 'failed';
}
因此我们已降级到7.1.9,但它在那里也无法正常工作。
没有引发任何错误,什么也没有。只是一个空白的屏幕。好像根本就没有...
如果我在此之前回声,它会起作用。如果我在此之后回声,什么也没发生。
为什么会这样?
答案 0 :(得分:0)
也许您可以尝试在此页面上的“示例#4”周围的建议,看看是否有所作为? http://php.net/manual/en/function.include.php
例如
if ((@include_once 'config.php') === FALSE) {
echo "failed";
}
顺便说一句:正如其他人所说的,@
在应用代码的那一行代码中抑制了PHP警告/错误。
我对您的问题的解释是,您故意使用@
来抑制引擎的警告,而是回显您自己的消息。如果您删除了@
并且包含失败,那么如果设置为显示错误,我希望看到警告消息输出,并且此后仍然应该echo
加上单词“ failed”。
答案 1 :(得分:0)
您认为@
到底是做什么的?它抑制错误。因此,当您说There is no error thrown, nothing
时,这是完全可以预期的,因为如果有任何错误,@可能会抑制它们。删除@,如果您不信任自己的php.ini设置,请也进行ini_set调用,并在某些调试打印中进行设置,例如
ini_set("error_reporting","-1");
echo "before include.";
if(!include_once('config.php')) {
echo 'failed';
}
echo "after include";
然后在执行后检查错误日志。
答案 2 :(得分:0)
这就是我解决的方法。
if (!(@include 'config.php')) { die(json_encode(array('error'=>true))); }
我需要抑制错误,因为我要在不破坏脚本的情况下处理错误-另一端知道这是一个错误,并会通知前端用户。