1

即使打开了错误报告,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>
4

3 回答 3

1

在生产中,出于安全原因,如果普通用户正在访问您的应用程序,我们将禁用显示错误。这与 php.ini 设置无关。

如果访问应用程序的用户是应用程序管理员之一,那么我们将显示错误以帮助您调试。

当然,所有错误都会发送到请求日志,因此您可以去那里检索它们。

于 2013-09-10T02:02:45.663 回答
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处理

于 2013-08-02T19:59:54.673 回答
0

如果您的应用程序异常应该出现在您的 App Engine 日志中,您可以直接使用Google Stackdriver Error Reporting来一目了然地查看您的 PHP 应用程序的错误。

无需设置,因为它是为 App Engine 自动配置的。

在https://console.cloud.google.com/errors访问您的项目的错误报告

于 2016-04-06T13:28:55.883 回答