即使display_errors = On,PHP也不会显示错误

我有一个运行PHP5的Apache2的Ubuntu服务器。在php.ini中,我设置了error_reporting = E_ALL | E_STRICT error_reporting = E_ALL | E_STRICTerror_reporting = E_ALL | E_STRICT error_reporting = E_ALL | E_STRICT ,但PHP仍然不显示错误消息。 我也在使用Apache虚拟主机。

另外,PHP5.3提供的最严格的错误报告是什么? 我希望我的代码尽可能地保持最新和未来的发展。

您还需要确保您的php.ini文件中包含以下设置,否则错误将仅转到默认设置或在虚拟主机configuration中指定的日志。

 display_errors = On 

php.ini文件是服务器上所有PHP的基本设置,但是这些可以很容易地被覆盖,并且可以修改PHP代码中的任何地方,并在这个改变之后影响到所有的东西。 一个好的检查是将display_errors指令添加到你的php.ini文件中。 如果您没有看到错误,但正在logging一个错误,请在文件顶部插入以下错误:

 ini_set('display_errors', 1); error_reporting(E_ALL); 

如果这样工作,那么你的代码早些时候是禁用错误显示。

我有同样的问题,并最终解决它。 我的错误是,我试图改变/etc/php5/cli/php.ini ,但后来我在这里find了另一个php.ini: /etc/php5/apache2/php.ini ,更改了display_errors = On,重新启动了Web服务器它的工作!

也许这对像我这样心不在焉的人是有帮助的。

我在Parallels Plesk Panel 10.4.4的虚拟服务器上遇到同样的问题。 解决方法是(感谢Zappa的想法)将error_reporting值设置为32767而不是E_ALL。 在页面:主页>订阅>(select域名)>自定义> PHP设置> error_reporting – input自定义值 – 32767

虽然这是旧post…我有类似的情况,让我头痛。 最后,我想我是包含index.php中的子页面与“@包括…”“@”隐藏所有错误,即使display_errors是ON

当您更新php.ini文件中的configuration时,可能需要重新启动apache。 尝试运行apachectl restartapache2ctl restart ,或类似的东西。

另外,在你的ini文件中,确保你有display_errors = on ,但是只能在开发环境中,而不能在生产机器上。

而且,最严格的错误报告正是您所引用的, E_ALL | E_STRICT E_ALL | E_STRICT 。 你可以在php文档中find关于错误级别的更多信息。

检查error_reporting标志,必须是E_ALL ,但在某些Plesk版本中,有引号( "E_ALL" )而不是( E_ALL

我解决了这个问题删除php.ini 的引号"

由此:

 error_reporting = "E_ALL" 

对此:

 error_reporting = E_ALL 

我有同样的问题,但我用ini_set('display_errors', '1'); 在错误的脚本本身内部,所以它从来不会触发致命/语法错误。 最后我解决了这个问题,把它添加到我的.htaccess中:

 php_value auto_prepend_file /usr/www/{YOUR_PATH}/display_errors.php 

display_errors.php:

 <?php ini_set('display_errors', 1); error_reporting(-1); ?> 

由此,我没有被迫改变php.ini ,使用它的特定子文件夹,并可以很容易地禁用它。

我知道这个线程是旧的,但我刚刚解决了与我的Ubuntu服务器类似的问题,并认为我会在这里添加一个笔记来帮助其他人,因为这个线程是谷歌的第一页PHP的主题不显示错误。

我尝试了php.ini中的error_reporting值的几个configuration设置。 从E_ALL | E_STRICT到E_ALL&E_NOTICE没有工作。 我没有得到任何浏览器中显示的语法错误(这在开发服务器上是相当烦人的)。 将error_reporting设置更改为“E_ALL”后,它们全部开始工作。 不知道是否是Ubuntu Oneric特定的问题,但在重新启动Apache错误后开始显示服务器正在服务的HTML页面中显示。 似乎多余的选项混淆了事情和所有错误报告停止。 HTH somone别的。

我只是遇到了同样的问题,事实certificate,我的问题不是在php.ini文件中,而是简单地说,我是以普通用户身份启动Apache服务器。 只要我做了“sudo /etc/init.d/apache2 restart”,我的错误就显示出来了。

确保您正在修改的php.ini位于/ etc / php5 / apache2文件夹中,否则将不会有任何影响…

只是想在这里添加另一个陷阱,以防有人发现类似于我的问题的这个问题。

当您使用Chrome(或Chromium)并且PHP触发位于HTML属性内的PHP代码中的错误时,Chrome会移除整个HTML元素,因此您无法在浏览器中看到PHP错误。

这里是一个例子:

 <p> <a href="<?=missingFunc()?>">test</a> </p> 

在Chrome中调用此代码时,您只能获取带有起始<p>标记的HTML文档。 其余的失踪。 这个<p>后面没有错误信息,也没有其他的HTML代码。 这不是一个PHP问题。 当您在Firefox中打开此页面时,您可以看到错误消息(查看HTML代码时)。 所以这是一个Chrome问题。

不知道是否有解决方法。 发生这种情况时,您必须在Firefox中testing页面或检查Apache错误日志。

我有与Apache和PHP 5.5相同的问题。 在php.ini ,我有以下几行:

 error_reporting E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT display_errors Off 

而不是以下内容:

 error_reporting=E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT display_errors=Off 

=号失踪)

虽然这个线程是旧的,但仍然,我觉得我应该从这个stackoverflow答案发布一个很好的答案 。

 ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); 

这确实救了我几个小时试图让事情工作。 我希望这可以帮助别人。