WordPress配置WP_DEBUG等为false仍显示PHP警告和通知如何解决?
排查方向
- 检查当前主机的全局PHP配置文件(php.ini)中的
display_errors、error_reporting参数,部分托管主机商会强制覆盖用户代码内的ini_set配置,优先级高于wp-config内的设置,可在站点根目录新建临时phpinfo文件打印配置,确认全局参数是否被强制开启。 - 检查站点根目录下是否存在
.user.ini文件,这类Nginx/Apache环境下的目录级PHP配置优先级高于代码内的ini_set,查看是否有display_errors = On这类强制开启错误显示的配置。 - 排查当前启用的WordPress主题
functions.php文件、已激活插件的代码,是否存在执行时机晚于wp-config、主动调用ini_set('display_errors', 'On')、error_reporting(E_ALL)的逻辑,这类代码会覆盖你提前设置的参数。 - 检查Web服务器的目录级配置:Apache环境查看
.htaccess是否有php_flag display_errors on这类配置,Nginx环境查看站点配置文件中是否有强制开启PHP错误显示的参数,服务器层面的配置优先级高于PHP代码内的设置。 - 确认你修改的是生效的wp-config.php文件,部分多站点架构、主机自动部署的WordPress会存在多个配置副本,优先读取上级目录的wp-config,会导致你修改的文件未实际生效。
- 检查主机是否开启了OPcache等PHP opcode缓存,缓存未更新的情况下修改后的配置文件不会被重新加载,清空缓存后再验证配置是否生效。
临时应急解决方案
如果暂时找不到根因,可以在wp-config.php文件的最顶部(所有代码之前)加入以下配置,强制接管错误显示逻辑,避免被后续加载的代码覆盖:
error_reporting(0); ini_set('display_errors', 0); @ini_set('display_errors', 'Off');
内容的提问来源于stack exchange,提问作者errorous
相关产品推荐
相关产品推荐

