即使display_errors = On,PHP也不会显示错误
我有一个运行PHP5的Apache2的Ubuntu服务器。在php.ini中,我设置了error_reporting = E_ALL | E_STRICT
error_reporting = E_ALL | E_STRICT
和error_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 restart
或apache2ctl 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);
这确实救了我几个小时试图让事情工作。 我希望这可以帮助别人。