如何在GAE中向web浏览器显示php错误?

如何在GAE中向web浏览器显示php错误?,php,google-app-engine,error-handling,Php,Google App Engine,Error Handling,Google App Engine中的错误将被抑制,即使错误报告处于启用状态,也不会显示在浏览器中。通常显示在浏览器中的html显示在日志文件中 以下代码应生成一个错误 <?php error phpinfo(); ?> 此应用程序的php.ini具有display\u errors=On,从应用程序中调用时,phpinfo会正确显示 预期的行为输出如下 $ php-cgi54 test.php X-Powered-By: PHP/5.4.14 Content-type

Google App Engine中的错误将被抑制,即使错误报告处于启用状态,也不会显示在浏览器中。通常显示在浏览器中的html显示在日志文件中

以下代码应生成一个错误

<?php
  error
  phpinfo();
?>
此应用程序的php.ini具有
display\u 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>
$php-cgi54 test.php
X-Powered-By:PHP/5.4.14
内容类型:text/html

(!)分析错误:语法错误,第3行的/Users/example/test/test.php中出现意外的“phpinfo”(T_字符串)
我不确定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()处理的

我不确定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()处理的

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

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


当然,所有的错误都会被发送到请求日志中,这样你就可以去那里检索它们。

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

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


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

如果应用程序异常出现在应用程序引擎日志中,您可以直接使用查看PHP应用程序的错误

无需安装,因为它是为App Engine自动配置的


访问项目的错误报告如果应用程序异常出现在应用程序引擎日志中,您可以直接使用查看PHP应用程序的错误

无需安装,因为它是为App Engine自动配置的


处访问项目的错误报告不确定是否可以在GAE中执行,但为什么要直接在输出上显示错误,而不是跟踪日志?当前的行为对于安全性来说更好,而您仍然可以使用日志相对轻松地进行调试。我可能会将其用于生产,但对于使用SDK开发环境的本地开发来说,这将非常好。不确定在GAE中是否可以,但为什么您要直接在输出上显示错误,而不是按照日志进行操作?当前的行为对于安全性更好,而您仍然可以使用日志相对轻松地进行调试。我可能会将其用于生产,但对于使用SDK开发环境的本地开发来说,这将非常好。生产与开发的定义是什么?我在本地开发服务器上运行这段代码,然后在appspot上运行一个副本。根据您所说,从appspot调用时不应显示错误<代码>打印“应用程序ID:”$_服务器['APPLICATION\u ID']。“\n”;打印“服务器:”$_服务器['SERVER_SOFTWARE']。“\n”;打印“是管理员:”$_服务器['USER\u IS\u ADMIN']。“\n”;打印“显示错误?”。ini_get('display_errors')。“\n”$test=null$foo=array\u merge($test,$test)卷曲本地和appspot页面时,会显示错误。下面是我发现的PHP异常有时表示为object,有时表示为string(如stackdriver日志中所示),您是否建议为所有PHP异常获取Exception对象?(我更喜欢使用异常对象而不是字符串,因为对象有更多的信息,即使日志中有很多由字符串表示的异常)是什么定义了生产与开发?我在本地开发服务器上运行这段代码,然后在appspot上运行一个副本。根据您所说,从appspot调用时不应显示错误<代码>打印“应用程序ID:”$_服务器['APPLICATION\u ID']。“\n”;打印“服务器:”$_服务器['SERVER_SOFTWARE']。“\n”;打印“是管理员:”$_服务器['USER\u IS\u ADMIN']。“\n”;打印“显示错误?”。ini_get('display_errors')。“\n”$test=null$foo=array\u merge($test,$test)卷曲本地和appspot页面时,会显示错误。下面是我发现的PHP异常有时表示为object,有时表示为string(如stackdriver日志中所示),您是否建议为所有PHP异常获取Exception对象?(我更喜欢使用异常对象而不是字符串,因为对象有更多的信息,即使日志中有很多由字符串表示的异常)