WordPress网站在进行系统核心程式、布景主题或外挂更新时,偶而会出现「这个网站发生重大问题」讯息而导致网站无法正常运作,甚至有时连后台也无法登入,新手站长看起来会觉得相当可怕,此时可藉由启动WordPress内建的侦错系统(Debug Systems),了解问题出现在哪里并加以解决。
Debug侦错模式的基本介绍📂
Debug Systems为WordPress内建的侦错系统,会将系统错误记载在debug.log文字档内,协助站长逐一检视问题在哪里,通常系是统核心程式、布景主题与外挂之间的不相容问题,但得将预设关闭的侦错系统启动,才能进行系统除错。
这个网站发生重大问题。请检查网站管理员电子邮件收件匣以取得相关说明。
Debug侦错模式的启动步骤
步骤一:找到wp-config.php组态档
在WordPress安装资料夹/public_html中,寻找名为「wp-config.php」的WordPress核心组态档,找到一行「define('WP_DEBUG', false);」的设定,这行设定表示Debug模式预设为未启用。
define('WP_DEBUG', false);
步骤二:修改WP_DEBUG为启动状态
修改wp-config.php的组态设定,将原有「define('WP_DEBUG', false);」修改为官方提供的设定值,设定启动除错模式,记录错误讯息并先停止显示警告画面。
// Enable WP_DEBUG mode
define( 'WP_DEBUG', true );
// Enable Debug logging to the /wp-content/debug.log file
define( 'WP_DEBUG_LOG', true );
// Disable display of errors and warnings
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );
// Use dev versions of core JS and CSS files (only needed if you are modifying these core files)
define( 'SCRIPT_DEBUG', true );
步骤三:检视debug.log的错误记录
在WordPress安装资料夹public_html/wp-content中,寻找名为「debug.log」的文字档,打开文字档逐一检视错误的讯息,通常是布景主题、外挂造成PHP的执行错误。
[12-Aug-2022 14:01:51 UTC] PHP Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 20480 bytes)
Debug侦错模式的解决案例
此次出现「这个网站发生重大问题」,主要是从全面从传统编辑器改用区块编辑器,时常在打开或新增文章时,就会出现错误画面,通常经重新整理页面后就会解决,但还是常常会出现同样问题。
经由启动侦错模式后,再次出现同样问题时,立即检视debug.log的记载内容,出现「PHP Fatal error: Allowed memory size of 268435456 bytes exhausted」,原来是使用区块编辑器撰写文章时,面临记忆体不足的问题。
因为使用Cloudways架站,提高PHP所需记忆体上限很方便,先进伺服器(Servers)的「Setting & Packages」设定分页,检视「Memory Limit」预设值为256MB,看起来相当够用,无须调整。
接着进入Cloudways的应用程式(Applications)设定画面,检视「Application Settings」设定分页的「PHP FPM SETTINGS」选项,预设值为[memory_limit] = 32M,先提高为64M后,持续观察是否够用。
;php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 32M
;php_admin_value[max_execution_time] = 120
;php_admin_value[date.timezone] = Asia/Taipei
此外,也可直接修改php.ini
设定档,设定整台伺服器的记忆体上限,或是调整wp-config.php
设定档,调整单一网站的记忆体上限。
// 設定一般網頁的記憶體上限
define( 'WP_MEMORY_LIMIT', '128M' );
// 設定管理後台的記憶體上限
define( 'WP_MAX_MEMORY_LIMIT', '256M' );
若是修改php.ini或wp-config.php
都无法更改设定值的话,此时得直接修改PHP组态值,在/public_html/wp-includes路径寻找default-constants.php,修改预设的记忆体限制。
// Define memory limits.
if ( ! defined( 'WP_MEMORY_LIMIT' ) ) {
if ( false === wp_is_ini_value_changeable( 'memory_limit' ) ) {
define( 'WP_MEMORY_LIMIT', $current_limit );
} elseif ( is_multisite() ) {
define( 'WP_MEMORY_LIMIT', '64M' );
} else {
define( 'WP_MEMORY_LIMIT', '40M' );
}
}
if ( ! defined( 'WP_MAX_MEMORY_LIMIT' ) ) {
if ( false === wp_is_ini_value_changeable( 'memory_limit' ) ) {
define( 'WP_MAX_MEMORY_LIMIT', $current_limit );
} elseif ( -1 === $current_limit_int || $current_limit_int > 268435456 /* = 256M */ ) {
define( 'WP_MAX_MEMORY_LIMIT', $current_limit );
} else {
define( 'WP_MAX_MEMORY_LIMIT', '256M' );
}
}
Debug侦错模式的外挂程式
若是执行WordPress系统程式修改不熟悉的人,建议直接安装WP调试外挂程式,就可直接启用WordPress的侦错模式,外挂也提供检视「debug.log」内容的功能,就可直接检视并解决问题。