我的 php 代码(这是一个导出 pdf 和 excel 功能,我正在使用 Yii 框架)在我的本地机器上运行良好。但是当我把代码放在linux服务器上时,我得到了一个错误。我用echo一步步调试,最后发现这一步失败了。$objWriter->save('php://output'); (使用 PHPExcel)。
但我无法看到它是什么错误。
我设置了 display_errors = On,还设置了 error_log。但我仍然无法看到错误信息。
确保你有这些设置:
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 CLIphp -l filename.php
检查文件中的语法错误。或者您可以创建另一个文件 x.php,其中仅包含一个包含到filename.php
.