我的PHP代码(导出pdf和excel功能,我正在使用Yii框架)在我的本地机器上运行良好。 但是当我把代码放在linux服务器上时 我收到一个错误。我使用echo逐步调试它,最后我发现它在这一步中失败了。 $ objWriter->保存( 'PHP://输出'); (使用PHPExcel)。
但是我无法看到它是什么错误。
我设置了display_errors = On,并设置了error_log。 但我仍然无法看到错误信息。
答案 0 :(得分:2)
确保您拥有以下设置:
error_reporting(E_ALL); // or possibly: E_ALL & ~E_NOTICE
ini_set('display_errors', TRUE);
ini_set('scream.enabled', TRUE); // this overrides the @ operator
如果您希望任何错误停止执行脚本,请定义错误处理函数:
function my_error_handler($errno, $errstr, $errfile, $errline, $errcontext) {
file_put_contents(
'custom_log_file.log',
'#'.$errno.' '.$errfile.':'.$errline.' '.$errstr
);
// throw new Exception('#'.$errno.' '.$errfile.':'.$errline.' '.$errstr);
die('#'.$errno.' '.$errfile.':'.$errline.' '.$errstr);
}
set_error_handler('my_error_handler');
如果你选择从你的错误处理函数中抛出异常(很可能你不会期望它只是出于调试目的),你可以设置异常处理程序。
function my_exception_handler() {
// here you code some nice visuals for your error handling
}
set_exception_handler('my_exception_handler');
在这两种情况下,您都可以var_dump(debug_backtrace());
查看发生错误的数据上下文。
如果PHP文件是第一次访问(即它的URL位于浏览器的地址栏中)并且其中存在语法错误,则无错误报告机制会显示该错误。
您可以使用linux CLI php -l filename.php
检查文件中的语法错误。或者,您可以创建另一个仅包含filename.php
包含的文件x.php。