Common WordPress errors

如果看到 WordPress 错误消息或白屏,请先不要慌。同样的问题很可能已有其他人遇到过,通常可以解决。

本页列出 WordPress 用户最常遇到的错误,提供排查起点。在 WordPress 支持中,还可以找到更详细的说明和论坛链接,志愿者会提供帮助。

白屏死机

PHP 错误和数据库错误都可能表现为白屏:页面一片空白,没有任何信息。WordPress 社区通常将其称为 WordPress 白屏死机(WSOD)。

采取激烈措施之前,先了解造成白屏的几个可能原因:

  • 插件造成兼容性问题。如果能打开管理界面,尝试停用全部插件,再逐个重新启用。如果无法打开管理界面,通过 FTP 登录网站,找到 wp-content/plugins,把插件目录改名为 plugins_old,即可停用所有插件。手动停用插件的更多说明见故障排查 FAQ。
  • 主题可能有问题。如果刚启用新主题,或刚在 WordPress 站点网络中创建新站点就出现白屏,尤其需要检查主题。登录管理界面,启用默认主题,例如 Twenty Twenty-One。WordPress 5.8 及更早版本应使用 Twenty Twenty-One,因为 Twenty Twenty-Two 要求 5.9 及以上版本。若无法打开管理界面,通过 FTP 进入 /wp-content/themes/,重命名当前启用主题的目录。

WP_DEBUG 功能通常能提供更多信息。

服务器内部错误

服务器内部错误消息
服务器内部错误消息

服务器内部错误可能有多种原因,可以尝试以下排查方法:

  • 最可能的问题是 .htaccess 文件损坏。通过 FTP 进入站点根目录,把 .htaccess 改名为 .htaccess_old,重新打开网站,观察问题是否解决。如果恢复正常,进入设置 > 固定链接,重新设置固定链接,以生成新的 .htaccess 文件。
  • 尝试停用所有插件,确认问题是否由插件引起。无法打开管理界面时,按这份说明通过 FTP 停用插件。
  • 切换到 WordPress 默认主题,例如 Twenty Twenty-One,排除主题问题。WordPress 5.8 及更早版本应使用 Twenty Twenty-One,因为 Twenty Twenty-Two 要求 5.9 及以上版本。
  • 提高 PHP 内存上限。
  • 尝试从全新下载的 WordPress 安装包重新上传 wp-admin 和 wp-includes 目录。

建立数据库连接时出错

如果页面显示“Error Establishing Database Connection”,说明数据库连接出现问题。下面列出可能的原因及解决方式。

wp-config.php 信息不正确

“Error establishing a database connection”通常由 wp-config.php 中的信息错误引起。通过 FTP 客户端进入网站,打开 wp-config.php,确认以下内容正确:

  • 数据库名称
  • 数据库用户名
  • 数据库密码
  • 数据库主机

进一步了解编辑 wp-config.php。

如果确认配置正确,可以尝试手动重置 MySQL 密码。

主机服务的问题

下一步是联系主机服务商。下列主机问题可能造成数据库连接失败:

  • 数据库达到配额上限,被关闭。
  • 服务器停机。

联系主机服务商,确认问题是否由上述情况造成。

网站被入侵

如果已经检查 wp-config.php,并向服务商确认了主机状况,网站可能遭到入侵。

使用 Sucuri SiteCheck 扫描网站,检查是否被入侵。如果确有入侵,阅读我的网站被黑了。

自动升级失败

WordPress 的自动更新功能有时会失败,症状包括:

  • 白屏,没有任何信息。
  • 提示更新失败的警告。
  • PHP 错误消息。

自动升级失败可能是因为连接 WordPress 核心文件时出现问题、升级期间网络连接出错,或文件权限不正确。

如需手动更新 WordPress,参阅手动更新说明。

连接超时

网站尝试执行的工作超出服务器处理能力时,会出现连接超时。共享主机的内存限制较严格,因此特别常见。可以尝试:

  • 停用全部插件。如果停用所有 WordPress 插件后问题解决,逐个启用,以找出造成问题的插件。无法打开管理界面时,阅读手动停用插件的方法。
  • 切换到默认 WordPress 主题。WordPress 5.8 及更早版本使用 Twenty Twenty-One;Twenty Twenty-Two 要求 5.9 及以上版本。这样可以排除主题问题。
  • 提高 wp-config.php 中的内存上限。使用共享主机时,可能需要请服务商提高内存限制。
  • 提高 php.ini 中的最大执行时间。这不是 WordPress 核心文件。如果不清楚如何编辑,请让主机服务商调整。提高最大执行时间的方法见下文。

升级后一直停留在维护模式

WordPress 维护模式消息

WordPress 更新时会自动创建 .maintenance 文件。升级后,可能仍显示“Briefly unavailable for scheduled maintenance. Please check back in a minute.”,即暂时因计划维护无法访问,请稍后再试。这可能是维护文件未正确删除。

要移除此消息:

  1. 使用 FTP 客户端登录网站。
  2. 删除站点根目录中的 .maintenance 文件。

进一步了解维护模式问题。

修改后没有变化

修改了网站,却在浏览器中看不到变化时,可能需要清除浏览器缓存。浏览器会保存访问过的网站信息;再次访问时,可直接加载电脑中已保存的数据,不必重新下载,因此速度更快。

如果浏览器认为网站修改不明显,便会继续加载缓存,看不到新内容。可以清空浏览器缓存,或关闭标签页后重新打开链接。

如果美化后的固定链接出现 404,上传图片时又出现白屏,Apache 可能没有默认启用 mod_rewrite。这是 Apache Web 服务器的扩展模块,可即时“重写”URL,是美化固定链接所需的功能。

WordPress 多站点网络较容易遇到这个问题;共享主机或网站迁移、服务器迁移后也可能发生。

在设置 > 固定链接中重新设置固定链接。如果无效,可能需要手动编辑 .htaccess。

# BEGIN WordPress  
<IfModule mod\_rewrite.c>  
RewriteEngine On  
RewriteBase /  
RewriteRule ^index\.php$ - [L]  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule . /index.php [L]  
</IfModule>  
# END WordPress

不熟悉 .htaccess 时,请联系服务商,让他们启用 mod_rewrite 规则。WordPress 文档中还有关于美化固定链接的更多说明。

自定义文章类型出现 404

自定义文章类型可能出现 404,可尝试:

  1. 确保自定义文章类型与独立页面没有重名。如果重名,重命名该页面,同时修改别名(slug)。
  2. 登录管理界面,进入设置 > 固定链接,先选默认格式并保存,再重新选择需要的格式。这会刷新重写规则,通常能解决问题。

严重错误消息

如果出现“There has been a critical error on this website. Please check your site admin email inbox for instructions.”,说明网站发生严重错误,导致 WordPress 无法按预期运行。该消息要求查看站点管理员邮箱中的处理说明。

先检查邮件,确认 WordPress 是否发来错误详情;然后在 wp-config.php 中启用调试模式。

启用后检查 wp-content/debug.log 中的日志,查明具体原因。

常见原因包括插件冲突、主题兼容性问题、PHP 版本不兼容、达到内存上限,以及 WordPress 文件损坏。

具体错误消息

错误日志中可能出现多种错误。先启用调试,再通过 FTP 找到日志。以下说明帮助理解常见消息。

PHP 错误

以下是常见 PHP 错误消息。

致命错误和警告

Cannot modify header information – headers already sent

如果警告 WordPress 无法修改响应头,因为响应头已发送,通常是 PHP 开始标记前或结束标记后出现了空格或其他字符。阅读解决 headers already sent 的方法。

刚安装 WordPress 就遇到此问题,可能是 wp-config.php 中引入了语法错误。这份说明可帮助排查。

Call to undefined function:调用了未定义函数

此错误可能表示插件要读取的文件或数据不存在,或无法访问。原因包括:

  • 自动安装或自动升级插件失败。尝试手动安装或升级插件。
  • 自动安装或自动升级主题失败。尝试手动安装或升级主题。
  • 使用了不兼容的 WordPress 插件或主题,例如旧版 WordPress 配合新版插件,或在单站点中使用多站点专用插件。可升级 WordPress 解决相应的版本问题。
  • 尝试调用不存在的函数。检查 functions.php 是否有拼写错误。

尝试停用引发错误的插件,或更换相关主题。无法在管理界面完成时,可能需要通过 FTP 手动处理。

Allowed memory size exhausted:允许的内存耗尽

此错误表示 WordPress 没有足够内存完成所需工作,可以尝试:

Maximum execution time exceeded:超过最大执行时间

可能看到“Maximum execution time of 30 seconds exceeded”或“Maximum execution time of 60 seconds exceeded”。这意味着进程耗时太长,超过 30 秒或 60 秒的限制。有多种处理方式。

编辑 .htaccess

编辑前务必备份 .htaccess。

向 .htaccess 添加下列一行:

php_value max_execution_time 60

编辑 php.ini

向 php.ini 添加:

max_execution_time = 60

如果不确定如何修改,或共享主机禁止自行修改,请让主机服务商提高最大执行时间。

解析错误

语法错误(Syntax Error)

语法错误表示 PHP 结构写错了,例如:

  • 某一行末尾缺少 ;。
  • 使用了弯引号。
  • 缺少花括号。

错误消息会指出所在文件(例如 functions.php)和大致行号。行号不一定精确,也要检查前后几行。

Unexpected:遇到非预期字符或标记

出现“parse error: unexpected”时,通常漏写了某个字符,常见情况包括:

  • Unexpected ‘=’:引用变量时漏写 $。
  • Unexpected ‘)’:漏写左括号 (。
  • Unexpected ‘(’:漏写右括号 )。
  • Unexpected T_STRING:上一行末尾漏写引号或分号。
  • Unexpected T_ELSE:写了 else,却没有对应的起始 if。

使用未定义常量

与解析错误类似,“use of an undefined constant”也可能意味着漏写字符,例如:

  • 引用变量时漏写 $。
  • 数组键外漏写引号。

数据库错误

WordPress 数据库可能出现以下错误。

Error 13:无法创建或写入文件

此错误可能由多种原因造成。

MySQL 无法创建临时文件。

通过 PHP 访问 MySQL 时,MySQL 的 tmpdir 变量可能指向不可写的目录。可在命令行进入 MySQL,输入 show variables 检查。输出的长列表中会有 tmpdir = /somedir/,具体目录取决于配置。

把 tmpdir 改为可写目录即可处理相应问题。

  1. 找到 my.cnf。在类 Unix 系统上通常位于 /etc/;Windows 则查找 my.ini。
  2. 用简单文本编辑器打开,找到 [mysqld] 段。
  3. 在该段找到 tmpdir。如果行首有 #,删除注释符,改为 tmpdir = /writable/dir;这里 /writable/dir 必须可写。有些系统使用 /tmp,也可考虑 /var/tmp 或 /usr/tmp。Windows 示例为 C:/Windows/tmp。
  4. 保存文件。
  5. 输入 mysqlshutdown -u -p shutdown 关闭 MySQL。
  6. 进入 MySQL 目录,输入 ./bin/safe_mysqld & 启动 MySQL。Linux 上该目录通常位于 /usr/local,有时位于 /usr/。

文件权限不正确

修正文件权限。

如果不理解上述操作,而系统由他人管理,把说明交给管理员,让其判断和处理。

CREATE 命令被拒绝

分配给数据库的用户没有足够权限创建列和表时,会出现此错误。需要登录 CPanel 或 Plesk,为数据库用户授予足够权限。

也可以创建新用户并分配给数据库。如果新建用户,务必同步更新 wp-config.php 中的配置。

Error 28

原因可能是:

  • /tmp(或 tmpdir 指向的目录)空间耗尽;
  • /tmp 中的文件过多,即使仍有大量可用空间;
  • 服务器缓存已满。

这是 MySQL 错误,与 WordPress 没有直接关系,应联系服务商。有用户报告在 phpMyAdmin 中运行“repair table”命令解决了问题。

Error 145

此错误表示数据库中的某个表损坏。如果熟悉 phpMyAdmin,可以按这份数据库表修复说明处理。

对数据库采取任何操作前,务必备份数据库。

未使用过 phpMyAdmin 或不熟悉其操作时,请让主机服务商对数据库执行 CHECK/REPAIR。

Unknown Column:未知列

数据库缺少某个列可能造成此错误。如果刚升级 WordPress,可再次手动升级,参阅更新说明。

执行数据库查询时遇到此错误,可能是标识符引号用错。这条 Stack Overflow 问答有更详细说明,也可参阅 MySQL 文档。

参考资料


来源与版权

来源:WordPress.org Advanced Administration,WordPress 文档贡献者。《Common WordPress errors》中文译稿,依据用户已取得的转载授权;原文中的链接与示例保留。 阅读原文。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容