如何调试大规模PHP应用程序的静默失败?

时间:2015-06-19 15:35:04

标签: php linux debugging

在下面的代码中,字符串“hi”永远不会输出。

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);
}

1 个答案:

答案 0 :(得分:0)

将你的require_once调用移到TRY块中,因为如果失败,它就不会被捕获。

此外,如果您不确定如何访问日志并且只是调试,请打印异常而不是记录它们。因此,在CATCH块中,添加echo $e->getMessage();

我认为您应该开始了解问题的原因。