即使启用了错误报告,Google App Engine中的错误也会被抑制并且不会显示在浏览器中。通常显示在浏览器中的html显示在日志文件中。
以下代码应生成错误
<?php
error
phpinfo();
?>
卷曲页面时,不会返回任何内容,只返回500响应代码。
$ curl -i http://localhost/test.php
HTTP/1.1 500 Internal Server Error
Content-Type: text/html
Cache-Control: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Length: 0
Server: Development/2.0
Date: Fri, 02 Aug 2013 18:24:49 GMT
此应用程序的php.ini有display_errors = On
,phpinfo会在应用程序内正确显示。
预期的行为就像这样输出
$ php-cgi54 test.php
X-Powered-By: PHP/5.4.14
Content-type: text/html
<br />
<font size='1'><table class='xdebug-error xe-parse-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Parse error: syntax error, unexpected 'phpinfo' (T_STRING) in /Users/example/test/test.php on line <i>3</i></th></tr>
</table></font>
答案 0 :(得分:1)
在生产中,出于安全原因,如果普通用户正在访问该应用,我们会禁用该应用的错误。这与php.ini设置无关。
如果访问应用程序的用户是其中一个应用程序管理员,那么我们将显示错误以帮助您进行调试。
当然,所有错误都会发送到请求日志,因此您可以去那里并检索它们。
答案 1 :(得分:0)
我不确定GAE是否会通过正常的php指令允许这样做。
您可以通过以下方式绕过它:
<?php
function display_error($errno, $errstr, $errfile, $errline, $errcontext) {
//echo desired info here
die();
}
set_error_handler("display_error");
?>
GAE可能会阻止这一点,但尝试一下就很容易
修改强>
有关致命错误的更多信息,因为这是您在问题中描述的错误类型,可能无法由set_error_handler();
处理
How do I catch a PHP Fatal Error
答案 2 :(得分:0)
如果您的应用程序例外应出现在您的App Engine日志中,您可以直接使用Google Stackdriver Error Reporting一目了然地查看PHP应用程序的错误。
不需要进行任何设置,因为它是为App Engine自动配置的。
为您的项目访问错误报告