error_reporting(E_ALL) 不会产生错误
Posted
技术标签:
【中文标题】error_reporting(E_ALL) 不会产生错误【英文标题】:error_reporting(E_ALL) does not produce an error 【发布时间】:2014-08-23 02:47:28 【问题描述】:这是我的 php 脚本 -
<?php
error_reporting(E_ALL);
echo('catch this -> ' ;. $thisdoesnotexist);
?>
如果要执行,显然应该显示一些东西。
我看到的只是一个空白页面。为什么error_reporting(E_ALL)
不起作用?
<?php
ini_set("display_errors", "1");
error_reporting(E_ALL);
echo('catch this -> ' ;. $thisdoesnotexist);
?>
也无济于事。我得到的只是一个空白页面。
我去过php.ini
并设置display_errors = On
和display_startup_errors = On
。什么都没有发生。
【问题讨论】:
display_errors
设置如何?
检查 display_errors 设置
没有帮助,正如我在问题编辑中所反映的那样。
你可以先运行php -l <file>
来检查你的语法
PHP - error_reporting doesn't work 的可能重复项
【参考方案1】:
您的文件有语法错误,因此您的文件没有被解释,因此设置没有更改,您有一个空白页。
您可以将文件一分为二:
文件index.php
<?php
ini_set("display_errors", "1");
error_reporting(E_ALL);
include 'error.php';
文件error.php
<?
echo('catch this -> ' ;. $thisdoesnotexist);
【讨论】:
这个有效。 index.php 显示错误。但无论我做什么,error.php 仍然是一个很大的空白页面。【参考方案2】:那个错误是一个解析错误。 解析器在浏览代码时抛出它,试图理解它。 解析阶段还没有执行任何代码。因为它还没有执行error_reporting
这一行,所以错误报告设置还没有改变。
您不能在有语法错误的文件中更改错误报告设置(或者说真的,任何事情)。
【讨论】:
【参考方案3】:在您的 php.ini 文件中检查 display_errors
。我认为它已关闭。
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
【讨论】:
我只是将它们都设置为开启。没有变化。 你不会内联,它们需要在php ini文件中设置【参考方案4】:在您的 php.ini 文件中检查 display_errors。如果它是关闭的,然后将其打开如下:
display_errors = On
它应该显示警告/通知/错误。
请阅读error_reporting int。
【讨论】:
"it" 在“它应该显示警告/通知/错误。” 中指的是什么?请通过editing (changing) your answer 回复,而不是在 cmets 中(without "Edit:"、"Update:" 或类似的 - 答案应该看起来像是今天写的)。【参考方案5】:你可以试着把它放在你的php.ini中:
ini_set("display_errors", "1");
error_reporting(E_ALL);
在php.ini文件中也可以设置error_reporting();
。
【讨论】:
如果是解析错误,这有什么帮助?你在什么系统上测试过这个(针对手头的问题)?结果如何?【参考方案6】:在您的 ini 文件中打开显示错误:
display_errors string
【讨论】:
【参考方案7】:只需执行以下操作:
检查phpinfo();
。检查display_errors
是打开还是关闭
如果是On
,只需在主索引文件中添加error_reporting(E_ALL);
。
如果是Off
,只需将其添加到您的主索引文件中
ini_set("display_errors", "1"); // This is the instant setup for individual applications
error_reporting(E_ALL);
然后检查phpinfo();
。检查display_errors
。现在是on
,仅供本应用使用
然后创建任何代码错误以进行测试并重新加载页面
万岁!现在您可以在控制台中看到错误。如果错误未显示在您的控制台中并且页面加载失败并在网络中显示红色警报,请不要担心。
检查您是否启用了modsecurity
,并且它有任何规则检查是用SecRule
编写的PHP。在您的开发期间移除该安全或禁用modsecurity
。
【讨论】:
“modsecurity”在哪里?什么文件?请通过editing (changing) your answer 回复,而不是在 cmets 中(without "Edit:"、"Update:" 或类似的 - 答案应该看起来像是今天写的)。 如果是解析错误,这有什么帮助?你在什么系统上测试过这个(对于手头的问题)?结果如何? Modsecurity 是 nginx/apache 模块,需要单独安装,我在 debian 上测试过这段代码以上是关于error_reporting(E_ALL) 不会产生错误的主要内容,如果未能解决你的问题,请参考以下文章