尚未设置WP_DEBUG,但我仍收到警告


14

据我了解,如果未设置WP_DEBUG,则永远都不会看到警告。但是在某些服务器上的某些站点上,我仍然看到一些。如果设置了WP_DEBUG,不是所有警告都会显示,而是选择一些警告。

我试过更改php.ini中的错误级别,但这似乎对警告是否出现没有影响,但是它们在不同服务器上的显示量确实不同(即,在开发中没有警告,在登台时没有警告,并且有关生产的其他一些警告)。


这些肯定是警告还是致命错误?
TheDeadMedic 2011年

我遇到了完全相同的问题,在我的情况下是GravityForms的警告,警告输出为-警告:“继续”定位开关等效于“中断”。您是要使用“继续2”吗?在/plugins/gravityforms/common.php中-以下Logic Digger的答案适用于我复制/粘贴的问题,请修复此首次尝试,谢谢。
OG肖恩

Answers:


8

WP_DEBUG对PHP错误输出没有影响。除了error_reporting设置外,还要在php.ini文件中设置display_errors = 0。默认情况下启用它进行开发。但是您希望在生产服务器上关闭它。


解释wp-includes / load.php:if(WP_DEBUG)error_reporting(E_ALL)。但是似乎确实有几个插件在不应该使用error_reporting和display_errors的情况下摆弄它们。
tomdxw 2011年

1
嗯-是的,在我的php.ini中,display_errors设置为On。我只是假设WP_DEBUG处理了所有错误。谢谢。
tomdxw 2011年

22

更换

define('WP_DEBUG', false);

有了这个:

ini_set('log_errors','On');

ini_set('display_errors','Off');

ini_set('error_reporting', E_ALL );

define('WP_DEBUG', false);

define('WP_DEBUG_LOG', true);

define('WP_DEBUG_DISPLAY', false);

4
请在回答中添加解释。
fuxia

屏幕上的错误可能已关闭,但您可以在错误日志中的服务器中看到它们
user2060451 '16

4

此行也可能已设置为false。在这种情况下,您将看到以下代码:

define('WP_DEBUG', false);

无论哪种情况,都需要用以下代码替换此行:

ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
define('WP_DEBUG', false);
define('WP_DEBUG_DISPLAY', false);

不要忘记保存更改并将wp-config.php文件上传回服务器。


1
感谢这项工作为我隐藏了前端的警告。WP_DEBUG已设置为false。
OG肖恩

1

尝试禁用/抑制您(顶部)中的所有错误警告/通知wp-config.php。无论如何:错误并不坏。他们为您提供了修复代码的机会。


我认为是其他人的插件摆弄了error_reporting导致了这一问题。
tomdxw 2011年

1

对于WordPress环境,通常没有理由使用它,ini_set因为WordPress Core提供的已定义常量已经实现了。PHP的工作方式是,某些设置可以在CMS(WordPress),单个脚本中甚至在每个用户或每个目录的基础上进行覆盖(这在很多程度上使Web主机和代理机构感到沮丧)。

要禁止在WordPress中在页面上显示错误,您真正需要的唯一设置是:

define('WP_DEBUG', false);

...由于WP_DEBUG被禁用,因此子选项处于不活动状态:

define('WP_DEBUG_DISPLAY', false);
define('WP_DEBUG_LOG', false);

请记住,令人困惑的WP_DEBUG_LOG选项仅是指debug.log在目录中创建,wp-content而不会影响其他日志记录设置等。

同样,WordPress中的设置可以覆盖默认的PHP设置,因此您的PHP设置与wp-config.php文件中具有正确设置的重要性无关,该文件会在其他WP组件之前加载。

也就是说,在生产环境中实现如下所示的默认设置是一个好主意:

error_reporting = E_ERROR | E_WARNING | E_PARSE
display_errors = Off
display_startup_errors = Off
log_errors = On
error_log = /var/www/logs/error.log
log_errors_max_len = 1024
ignore_repeated_errors = On
ignore_repeated_source = Off
report_memleaks = On
xmlrpc_errors = 0
html_errors = Off

有关完整示例,请参阅针对Nginx和PHP-FPM优化的SlickStack php.ini文件

在一个案例中,经过数小时的研究,我们意识到一个插件(或主题)将覆盖先前在php.ini和中设置的各种错误处理设置wp-config.php。防止这种情况的唯一方法是删除试图“黑客”您的PHP设置的WordPress插件或主题,或者告诉他们删除它,因为对于扩展而言,这是覆盖CMS调试选项的非常不好的做法。

在SlickStack中,我们创建了一个Bash脚本,通过使用MU插件(PHP脚本)突出显示这样的实例,从而在和目录中的PHP文件中“标记”任何ini_set和所有error_reporting行,在WP Admin仪表盘中显示此类“黑客”的列表。/themes//plugins/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.