我经常会尝试运行PHP脚本,然后得到一个空白屏幕。没有错误信息;只有一个空屏幕。原因可能是一个简单的语法错误(错误的括号,缺少分号),或者函数调用失败,或者完全是其他原因。
很难找出哪里出了问题。我最终注释掉了代码,到处输入“echo”语句,等等,试图缩小问题的范围。但肯定有更好的办法,对吧?
是否有一种方法可以让PHP像Java那样产生有用的错误消息?
我经常会尝试运行PHP脚本,然后得到一个空白屏幕。没有错误信息;只有一个空屏幕。原因可能是一个简单的语法错误(错误的括号,缺少分号),或者函数调用失败,或者完全是其他原因。
很难找出哪里出了问题。我最终注释掉了代码,到处输入“echo”语句,等等,试图缩小问题的范围。但肯定有更好的办法,对吧?
是否有一种方法可以让PHP像Java那样产生有用的错误消息?
当前回答
有一个非常有用的扩展名为“xdebug”,它也会使您的报告更好。
其他回答
您可以在要调试的文件中包含以下行:
error_reporting(E_ALL);
ini_set('display_errors', '1');
这将覆盖PHP .ini中的默认设置,这只会使PHP向日志报告错误。
对于语法错误,您需要在php.ini中启用错误显示。默认情况下,这些是关闭的,因为您不希望“客户”看到错误消息。查看PHP文档中关于error_reporting和display_errors这两个指令的信息。Display_errors可能是您想要更改的。如果你不能修改php.ini,你也可以在。htaccess文件中添加以下代码:
php_flag display_errors on
php_value error_reporting 2039
您可以考虑在您的PHP版本中使用E_ALL的值(如Gumbo所提到的)用于error_reporting以获取所有错误。更多信息
(1)您可以检查错误日志文件,因为它将有所有的错误(除非日志记录已被禁用)。(2)添加以下两行代码将帮助您调试非语法错误:
error_reporting(-1);
ini_set('display_errors', 'On');
另一种选择是使用编辑器,当你打字时检查错误,如PhpEd。PhpEd还提供了一个调试器,可以提供更详细的信息。(PhpEd调试器与xdebug非常相似,并直接集成到编辑器中,因此您可以使用一个程序来完成所有工作。)
卡特曼的链接也很好:http://www.ibm.com/developerworks/library/os-debug/
我用这样的方法解决了我的500个问题:
A.检查php.ini参数
php.ini >> error_reporting = E_ALL | E_STRICT php.ini >> display_errors = On php.ini >> display_startup_errors =关闭
B.更新IIS管理器参数
IIS管理器>>错误页面>> 500 >>编辑功能设置>>详细错误
在这一步中,您将得到500个这样的错误,并且没有加载HTML。
IIS管理>> FastCGI设置>> php-cgi.exe >>标准错误模式>> IgnoreAndReurn200
在这一步中,您可以看到包含PHP错误的HTML页面,如下所示。
完成:)
在页面顶部选择一个参数
error_reporting(E_ERROR | E_WARNING | E_PARSE);
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
ini_set('html_errors', 1);
此外,使用xdebug可以获得更详细的信息。