我已经检查了我的php ini文件( php.ini
)以及 display_errors
已设置,并且错误报告也已设置 E_ALL
. 我已经重新启动了apache Web服务器。
我甚至把这些行放在我的脚本的顶部,它甚至不捕捉简单的解析错误。例如,我用 "$"
我不会结束陈述 ";"
. 但是我所有的脚本都会在这些错误上显示一个空白页,但是我想在浏览器输出中看到错误。
error_reporting(E_ALL);
ini_set('display_errors', 1);
还有什么事要做?
28条答案
按热度按时间ni65a41a16#
如果你发现自己处于一种无法通过
php.ini
或者.htaccess
当php脚本包含解析错误时,显示错误就太不走运了。然后,您必须在命令行上解析为linting文件,如下所示:如果您的主机被锁定,不允许通过
php.ini
或者.htaccess
,也可能不允许通过ini_set
. 您可以使用以下php脚本进行检查:vi4fp9gy17#
在我的普通php项目中,我通常使用以下代码。
cl25kdpy18#
如果尽管遵循了以上所有的答案(或者您无法编辑php.ini文件),但仍然无法获得错误消息,请尝试创建一个新的php文件来启用错误报告,然后包含问题文件。如:
尽管我把一切都安排妥当了
php.ini
文件,这是我唯一能发现名称空间错误的方法。我的确切设想是:jxct1oxe19#
由于我们现在运行的是PHP7,这里给出的答案不再正确。唯一还行的是frankforte在谈到php时提到的那个 7.
另一方面,与使用try/catch来捕捉错误不同,您可以使用一个技巧:使用include。
下面是三段代码:
文件:tst1.php
在php中运行这个 7什么也看不出来。
现在,试试这个:
文件:tst2.php
文件:tst3.php
现在运行tst2设置错误报告,然后包括tst3。您将看到:
分析错误:语法错误,意外的文件结尾,在tst3.php的第4行需要变量(t\u variable)或${(t\u dollar\u open\u curly\u braces)或{$(t\u curly\u open)
fcg9iug320#
在php文件所在的文件夹中创建一个名为php.ini的文件。
在php.ini中添加以下代码(我给出了一个显示代码的简单错误):
1mrurvl121#
在index.php文件中设置:
anhgbhbe22#
用途:
这是编写它的最佳方法,但是语法错误会产生空白输出,因此请使用控制台检查语法错误。调试php代码的最佳方法是使用控制台;运行以下命令:
uqjltbpv23#
这将起作用:
swvgeqrz24#
您可能会发现“错误报告”或“显示错误”的所有设置在php中似乎都不起作用 7.这是因为错误处理发生了变化。请尝试以下操作:
或者,一次性捕获异常和错误(这与php不向后兼容) 5):
wbrvyc0a25#
一些web宿主提供程序允许您在
.htaccess
文件。可以添加以下行:
我和你有同样的问题,这个解决方案解决了。
ki1q1bka26#
要显示所有错误,您需要:
1.在从浏览器调用的php脚本中包含这些行(通常是
index.php
):2.(a)确保此脚本没有语法错误
-或者-
2.(b)套
display_errors = On
在你的php.ini
否则,它连这两条线都跑不了!您可以通过运行(在命令行)检查脚本中的语法错误:
如果包含来自另一个php脚本的脚本,那么它将在包含的脚本中显示语法错误。例如:
index.php
```error_reporting(E_ALL);
ini_set('display_errors', '1');
// Any syntax errors here will result in a blank screen in the browser
include 'my_script.php';
`my_script.php`
adjfkj // This syntax error will be displayed in the browser
ngynwnxp27#
在php.ini中:
然后重新启动web服务器。
bqujaahr28#
在运行时启用错误输出时,您无法捕获解析错误,因为它在实际执行任何操作之前解析文件(并且由于在此过程中遇到错误,因此不会执行任何操作)。您需要更改实际的服务器配置,以便启用“显示错误”,并使用适当的错误报告级别。如果您没有访问php.ini的权限,则可以使用.htaccess或类似的工具,具体取决于服务器。
此问题可能提供其他信息。