提问人:wowpatrick 提问时间:6/26/2011 最后编辑:Cedric Ipkisswowpatrick 更新时间:3/4/2021 访问量:148668
PHP 不显示错误,即使 display_errors = On
PHP not displaying errors even though display_errors = On
问:
我有一个运行 Apache2 和 PHP 5 的 Ubuntu 服务器。在我设置和php.ini中,但PHP仍然没有显示错误消息。我也在使用 Apache 虚拟主机。display_errors = On
error_reporting = E_ALL | E_STRICT
另外,PHP5.3 提供的最严格的错误报告是什么?我希望我的代码尽可能最新且面向未来。
答:
更新php.ini文件中的配置时,可能需要重新启动 apache。尝试运行或 ,或类似的东西。apachectl restart
apache2ctl restart
此外,在 ini 文件中,确保 display_errors = 已打开
,但仅限于开发环境,而不是在生产计算机中。
此外,最严格的错误报告正是您引用的。您可以在 php 文档中找到有关错误级别的更多信息。E_ALL | E_STRICT
评论
您还需要确保文件包含以下设置,否则错误将仅转到默认设置的日志或虚拟主机配置中指定的日志。php.ini
display_errors = On
该文件是服务器上所有 PHP 的基本设置,但是这些设置可以很容易地被覆盖和更改 PHP 代码中的任何位置,并影响更改后的所有内容。一个好的检查是将指令添加到您的文件中。如果您没有看到错误,但正在记录错误,请在导致错误的文件顶部插入以下内容:php.ini
display_errors
php.ini
ini_set('display_errors', 1);
error_reporting(E_ALL);
如果这可行,则代码中前面的内容是禁用错误显示。
评论
display_errors
On
我知道这个线程很旧,但我刚刚解决了我的 Ubuntu 服务器的类似问题,并认为我会在这里添加一个注释来帮助其他人,因为这个线程是 Google 中 PHP 不显示错误主题的第一页。
我在 php.ini 中尝试了 error_reporting 值的几种配置设置。从 E_ALL |E_STRICT E_ALL和E_NOTICE,但没有一个奏效。我没有在浏览器中显示任何语法错误(这在开发服务器上相当烦人)。将error_reporting设置更改为“E_ALL”后,一切开始工作。不确定这是否是 Ubuntu Oneric 特定的问题,但在重新启动 Apache 后,服务器提供的 HTML 页面中开始出现错误。似乎额外的选项令人困惑,所有错误报告都停止了。HTH somone else.
评论
我在使用 Parallels Plesk Panel 10.4.4 的虚拟服务器上遇到了同样的问题。解决方案是(感谢 Zappa 的想法)将error_reporting值设置为 32767 而不是 E_ALL。 在普莱斯克: 首页 > 订阅 > (选择域) > 自定义 > PHP 设置 > error_reporting - 输入自定义值 - 32767
我刚刚遇到了同样的问题,事实证明我的问题不在于php.ini文件,而只是以普通用户的身份启动apache服务器。一旦我执行了“sudo /etc/init.d/apache2 restart”,就显示了我的错误。
我遇到了同样的问题,终于解决了。我的错误是我试图更改 /etc/php5/cli/php.ini,但后来我在这里找到了另一个php.ini:/etc/php5/apache2/php.ini,更改了 display_errors = On,重新启动了 Web 服务器,它工作了!
也许这对像我这样心不在焉的人来说会有所帮助。
评论
确保您要修改的php.ini位于 /etc/php5/apache2 文件夹中,否则它不会有任何影响......
只是想在这里添加另一个陷阱,以防有人发现这个问题与我的问题相似。
当您使用 Chrome(或 Chromium)并且 PHP 触发位于 HTML 属性内的 PHP 代码中的错误时,Chrome 会删除整个 HTML 元素,因此您无法在浏览器中看到 PHP 错误。
下面是一个示例:
<p>
<a href="<?=missingFunc()?>">test</a>
</p>
在 Chrome 中调用此代码时,您只会获得带有起始标记的 HTML 文档。其余的都不见了。在此之后没有错误消息,也没有其他 HTML 代码。这不是PHP问题。当您在Firefox中打开此页面时,您可以看到错误消息(查看HTML代码时)。所以这是一个Chrome问题。<p>
<p>
不知道某处是否有解决方法。当这种情况发生在你身上时,你必须在Firefox中测试页面或检查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
(标志不见了)=
评论
虽然这是旧帖子... 我也有类似的情况,让我头疼。 最后,我想我在index.php中包含了带有“@include ...” “@”隐藏所有错误,即使display_errors处于开启状态
检查标志,必须是 ,但在 Plesk 的某些版本中,有引号 () 而不是 (error_reporting
E_ALL
"E_ALL"
E_ALL
)
我解决了这个问题,删除了引号 ()"
php.ini
由此:
error_reporting = "E_ALL"
对此:
error_reporting = E_ALL
评论
我遇到了同样的问题,但我在错误的脚本本身中使用了,因此它永远不会因致命/语法错误而触发。最后,我通过将其添加到我的.htaccess中来解决它:ini_set('display_errors', '1');
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
虽然这个线程很旧,但仍然如此,我觉得我应该从这个 stackoverflow 答案中发布一个很好的答案。
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
这确实拯救了我几个小时试图让事情开始工作。我希望这对某人有所帮助。
在带有 ISS 的 Windows 上运行 PHP 时,需要设置 ISS 中的一些配置设置,以防止显示通用默认页面。
1) 双击 FastCGISettings,单击 PHP,然后单击 Edit。 将 StandardErrorMode 设置为 ReturnStdErrLn500。
2)转到该站点,双击“错误页面”,单击“500”状态,单击“编辑功能设置”,将“错误响应更改为详细错误”,单击“确定”
我也遇到了这个问题。最后,我找到了解决方案。我正在使用 UBUNTU 16.04 LTS。
1)打开文件(在PHP版本下,但会在版本文件下),找到部分并设置以下值。/ect/php/7.0/apache2/php.ini
/etc/php
apache2/php.ini
ERROR HANDLING AND LOGGING
{display_error = On, error_reporting = E_ALL}
注意 - 在该部分下,也可以找到这些值指令,但不要更改,只是在我告诉的部分中更改。QUICK REFERENCE
2)重新启动Apache服务器sudo systemctl restart apache2
对我来说,我通过删除相对文件夹中的php_errors.txt文件解决了它。然后,当代码下次运行时,将再次自动创建该文件,并且这次打印错误。
我也面临同样的问题,我的php.inni文件中有以下设置
display_errors = On
error_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICT
但是,PHP错误仍然没有显示在网页上。我只是重新启动我的apache服务器,这个问题得到了解决。
评论
error_log