2011-08-09 23 views
1

我明白一个500响应可以在各种不同的场景下返回,但是有什么办法可以让服务器日志特别是什么引起了500?或者就此而言,将其打印到PHP页面/输出中?有没有办法让Apache/PHP日志专门为什么要返回一个500?

编辑:

我在MEDIATEMPLE的网格服务,显示错误是在phpinfo(),下面是我的PHP代码:ini_set('display_errors',1);error_reporting(E_ALL|E_STRICT);

和错误记录在我的主机已开启配置,但当我tail日志,什么都没有出现,当我点击刷新。有任何想法吗?

+0

如果你生成500自己,然后使用error_log中()保存的原因到PHP自己的错误日志。 Apache本身通常不会知道有关PHP内部状态的任何信息。如果PHP崩溃并且Apache登录500,那么它会有一些关于崩溃原因的细节。 –

回答

1

500错误的原因应该在Apache的错误日志中。如果PHP负责,那么如果您在php.ini中有display_errors = On,那么错误将显示在屏幕上。

+0

我在PHP和托管配置中打开了错误日志记录,但每次生成500时都没有写入日志。那样,没有错误信息被打印到通常的“内部服务器错误”以外的页面上。如果我没有在日志中看到它,请不要访问Apache的核心日志(由于我的提供程序),并且无法将其打印到屏幕上,有没有其他方法可以查看具体原因错误? – barfoon

+0

您正在查看的PHP错误日志通常是否会写入错误输出?你可以用'error_log('把它放在错误日志')'中写入吗?如果没有,那么问题是你的PHP错误日志根本没有被使用。解决这个问题,那些产生500错误的错误也会出现在那里。 – octern

0

你可以试试:

$log_file = 'c:temp\test_error.txt'; 
register_shutdown_function('handleShutdown'); 

function handleShutdown() { 
    global $log_file; 
    $error = error_get_last(); 
    if ($error !== NULL) { 
     $info = "[SHUTDOWN] file:" . $error['file'] . " | ln:" . $error['line'] . " | msg:" . $error['message'] . PHP_EOL; 
     file_put_contents($log_file, $info, FILE_APPEND); 
    } else { 
     file_put_contents($log_file, "SHUTDOWN ", FILE_APPEND); 
    } 
} 
相关问题