如何调试大量PHP应用程序的静默失败?
问题描述:
在下面的代码中,字符串“hi”从不输出。如何调试大量PHP应用程序的静默失败?
MainDispatcher
这个类只是一个大型框架的推广,它下面有一个大型应用程序,它“直到前一天都工作正常”(我试过git-bisect
它,但这是另一篇文章的故事)。
如何找出代码在哪里静默终止执行?
require_once "autoload/classes.php";
try {
$main = new MainDispatcher(root());
if ($main->httpHeaders()) {
$main->handleRequest();
}
echo 'hi';
}
catch(Exception $e) {
echo 'hi';
Log::error($e, $main->config->traceLog);
}
答
您的移动电话require_once
TRY块内,因为如果这是失败的,它不会被抓到。另外,如果您不确定如何访问日志并且只是调试,则打印异常而不是记录日志。因此在CATCH块中添加一个echo $e->getMessage();
。
我认为你应该开始看到你的问题的原因。
错误日志为空? – frz3993
打开错误报告? – diggersworld
也许'MainDispatcher'在那里有一个die()或exit()。 – Drakes