我经常会尝试运行PHP脚本,然后得到一个空白屏幕。没有错误信息;只有一个空屏幕。原因可能是一个简单的语法错误(错误的括号,缺少分号),或者函数调用失败,或者完全是其他原因。
很难找出哪里出了问题。我最终注释掉了代码,到处输入“echo”语句,等等,试图缩小问题的范围。但肯定有更好的办法,对吧?
是否有一种方法可以让PHP像Java那样产生有用的错误消息?
我经常会尝试运行PHP脚本,然后得到一个空白屏幕。没有错误信息;只有一个空屏幕。原因可能是一个简单的语法错误(错误的括号,缺少分号),或者函数调用失败,或者完全是其他原因。
很难找出哪里出了问题。我最终注释掉了代码,到处输入“echo”语句,等等,试图缩小问题的范围。但肯定有更好的办法,对吧?
是否有一种方法可以让PHP像Java那样产生有用的错误消息?
当前回答
一些应用程序确实自己处理这些指令,通过调用这样的命令:
error_reporting(E_ALL & ~E_DEPRECATED); or error_reporting(0);
从而覆盖你的。htaccess设置。
其他回答
有一个非常有用的扩展名为“xdebug”,它也会使您的报告更好。
一些应用程序确实自己处理这些指令,通过调用这样的命令:
error_reporting(E_ALL & ~E_DEPRECATED); or error_reporting(0);
从而覆盖你的。htaccess设置。
下面将启用所有错误:
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
error_reporting(-1);
请参见以下链接
http://php.net/manual/en/errorfunc.configuration.php#ini.display-errors http://php.net/manual/en/errorfunc.configuration.php#ini.display-startup-errors http://php.net/manual/en/function.error-reporting.php
在页面顶部选择一个参数
error_reporting(E_ERROR | E_WARNING | E_PARSE);
PHP配置
php.ini中的2个条目指示错误的输出:
display_errors error_reporting
在生产中,display_errors通常设置为Off(这是一件好事,因为在生产站点中错误显示通常是不可取的!)
但是,在开发中,应该将其设置为On,以便显示错误。检查!
error_reporting(从PHP 5.3开始)默认设置为E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED(意思是,除了通知、严格标准和弃用通知之外的所有内容都会显示)。当不确定时,将其设置为E_ALL以显示所有错误。检查!
哇哇!没有检查!我不能改变我的php.ini!
真遗憾。通常共享主机不允许更改它们的php.ini文件,因此,遗憾的是,这个选项是不可用的。但是不要害怕!我们还有其他选择!
运行时配置
在所需的脚本中,我们可以在运行时更改php.ini条目!这意味着,它将在脚本运行时运行!甜蜜的!
error_reporting(E_ALL);
ini_set("display_errors", "On");
这两行代码与上面修改php.ini条目的效果相同!太棒了!
我仍然得到一个空白页/500错误!
这意味着脚本甚至还没有运行!这通常发生在语法错误的时候!
由于语法错误,脚本甚至无法进入运行时。它在编译时失败,这意味着它将使用php.ini中的值,如果没有更改,可能不允许显示错误。
错误日志
此外,PHP在默认情况下会记录错误。在共享主机中,它可能位于专用文件夹中,也可能位于与该脚本相同的文件夹中。
如果您可以访问php.ini,您可以在error_log条目下找到它。