0

我的 php 代码(这是一个导出 pdf 和 excel 功能,我正在使用 Yii 框架)在我的本地机器上运行良好。但是当我把代码放在linux服务器上时,我得到了一个错误。我用echo一步步调试,最后发现这一步失败了。$objWriter->save('php://output'); (使用 PHPExcel)。

但我无法看到它是什么错误。

我设置了 display_errors = On,还设置了 error_log。但我仍然无法看到错误信息。

4

1 回答 1

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 CLIphp -l filename.php检查文件中的语法错误。或者您可以创建另一个文件 x.php,其中仅包含一个包含到filename.php.

于 2012-10-23T15:35:56.953 回答