WordPress网站出问题时,页面上显示的往往只是一句英文报错,或者干脆一片空白。其实常见的报错就那么十来种,成因和处理方法都很固定。
本文把这些报错汇总到一起,每一项先讲是什么意思,再给出排查顺序。主机专属的版本这里不重复,需要的话看文末的链接。
排查之前先做三件事
- 先备份:改文件、改数据库之前,先备份一份,至少把要改的文件复制一个副本。几种备份方式见《WordPress网站怎么备份?》;
- 确认是不是只有你自己看到:换手机流量、换浏览器无痕窗口访问,排除浏览器缓存和本地网络的问题;
- 回想最近改过什么:更新了哪个插件、主题,装了什么新东西,改过PHP版本没有。大部分报错都出在刚刚改动的东西上。
另外,下面很多办法都要用到FTP或主机的文件管理器。后台进不去时,这是唯一的入口,没有的话先在主机后台找到它。
第一步:打开调试日志,看清到底是哪里错了
很多时候不需要猜,让WordPress把错误写进日志就能看到是哪个插件、哪个文件、哪一行。在wp-config.php里,找到WP_DEBUG那一行(没有就加在「That's all, stop editing」那句话之前),改成:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
三个参数的含义是:
WP_DEBUG:调试总开关,默认关闭;WP_DEBUG_LOG:把错误写入wp-content/debug.log文件;WP_DEBUG_DISPLAY:设成false,错误就不会直接显示在网页上给访客看到。
刷新一次出错的页面,打开wp-content/debug.log,找最后几行,路径里一般会直接写出wp-content/plugins/某个插件名/。WordPress官方提醒调试功能不要在正式网站上长期开着,问题解决后,把WP_DEBUG改回false,并把debug.log删掉,因为里面可能包含路径等敏感信息。
另外,主机后台一般也有错误日志可查,比如Hostinger的错误日志见《Hostinger的网站出错了怎么办?》。
一、Error establishing a database connection(建立数据库连接时出错)
意思:WordPress连不上数据库,前台和后台都会显示这句话。
常见原因:wp-config.php里的数据库信息不对(刚迁移网站、改过密码之后最常见)、数据库用户权限不对、数据库表损坏、服务器数据库服务暂时挂了、数据库空间满了。
排查顺序
- 打开
wp-config.php,核对DB_NAME、DB_USER、DB_PASSWORD、DB_HOST四项和主机后台里数据库的信息是否一致。DB_HOST大部分主机是localhost,少数主机是单独的地址,以主机后台为准; - 密码对不上的话,在主机后台重置数据库用户的密码,再同步填进
wp-config.php; - 在
wp-config.php里加入修复开关,然后访问修复页面(代码见下方),选择修复数据库; - 只有后台打不开、前台正常,或者反过来,通常是
siteurl和home的值不对,在phpMyAdmin里检查wp_options表; - 联系主机客服,确认数据库服务有没有故障,或者数据库空间、磁盘空间是不是用满了;
- 网站是不是被入侵了。如果以上都正常,用扫描工具检查一下,被黑的处理见《WordPress网站被黑、中毒了怎么办?》。
第3步要加在wp-config.php里的代码:
define( 'WP_ALLOW_REPAIR', true );
加完后访问https://你的域名/wp-admin/maint/repair.php,选择修复数据库。修复完立刻把这一行删掉,因为这个页面不需要登录就能访问。
数据库的创建和权限设置,各家主机不同,SiteGround的见《SiteGround怎么创建数据库和用户?》。
二、There has been a critical error on this website(此站点遇到了致命错误)和白屏
意思:PHP代码执行时出了致命错误,页面中断。较新的WordPress会显示「此站点遇到了致命错误」并发一封邮件给管理员;较老的版本或者某些情况下,就是一整片空白,俗称白屏(White Screen of Death)。
常见原因:插件或主题冲突、PHP版本和插件不兼容、内存不够、文件损坏。
排查顺序
- 看管理员邮箱:WordPress会把详细的错误和一个恢复模式的登录链接发给站点的管理员邮箱,点链接可以登录后台,WordPress会提示是哪个插件或主题出错,直接停用它;
- 停用所有插件:后台能进,就在插件页批量停用;进不去,就用FTP把
wp-content/plugins文件夹改名,比如改成plugins_old,再访问网站。能打开的话,说明问题出在某个插件上。再把文件夹名改回来,进入后台逐个启用,找到引起问题的那个; - 换成默认主题:停用插件没用,就把当前主题的文件夹改名,WordPress会自动回退到默认的Twenty Twenty-几主题;
- 开调试日志:按上面第一步的方法,看日志里指向的文件;
- 检查PHP版本:刚升级过PHP的话,退回上一个版本试试,看是否好转,各家主机切换PHP的位置不一样,SiteGround见《Siteground怎么切换PHP版本》,Hostinger见《Hostinger怎么切换PHP版本》;
- 调大内存:见下面的第四项;
- 还是不行,从备份恢复。
三、500 Internal Server Error(内部服务器错误)
意思:服务器处理请求时出了问题,但没有告诉你具体原因。这是个笼统的报错,WordPress官方给的排查顺序是:
- 重命名
.htaccess:用FTP把网站根目录的.htaccess改名为.htaccess_old,再访问网站。如果恢复正常,说明是这个文件里的规则出了问题(文件是隐藏文件,要开启显示隐藏文件)。然后进入后台「设置 → 固定链接」,不改任何东西直接点保存,WordPress会重新生成一份新的.htaccess; - 停用所有插件,方法同上;
- 换成默认主题;
- 调大PHP内存限制;
- 重新上传核心文件:从wordpress.org下载一份相同版本的WordPress,只重新上传
wp-admin和wp-includes两个文件夹覆盖,不要动wp-content和wp-config.php。
如果以上都没用,去主机后台看错误日志,里面一般有具体原因。也有可能是主机那边的问题,比如进程数、内存用满,需要找客服。
四、Allowed memory size exhausted(内存耗尽)
意思:某个PHP进程用的内存超过了允许的上限,报错类似Allowed memory size of 134217728 bytes exhausted。
常见原因:插件太多或者有写得不好的插件、导入大文件、网站图片处理占用内存多、主机给的内存太少。
解决方法
在wp-config.php里加一行(放在「That's all, stop editing」之前):
define( 'WP_MEMORY_LIMIT', '256M' );
其他办法:
- 有的主机会忽略这行,需要在主机的PHP设置里调大
memory_limit。Hostinger见《Hostinger的PHP参数怎么修改》,Cloudways见《Cloudways后台常用设置》; - 调大之后能用,但不要无限制地加大,先找出占内存的插件(调试日志里会写),停用或更换。
五、网站一直显示「Briefly unavailable for scheduled maintenance」
意思:WordPress更新核心、插件或主题时,会在网站根目录临时生成一个.maintenance文件,让网站进入维护模式,更新完会自动删除。如果更新中途被打断,这个文件就留下来了,网站就一直显示这句话。
解决方法
- 先等一两分钟,更新可能还没结束;
- 用FTP或文件管理器进入网站根目录,找到
.maintenance,删除它; - 刷新网站。该文件名以点开头,要显示隐藏文件才能看到;
- 回到后台,检查刚才更新的插件或主题是不是完整,必要时重新更新一次。
六、更新失败,提示另一个更新正在进行
更新WordPress核心时被打断,会提示有另一个更新正在进行。这是WordPress的更新锁,通常约15分钟后自动失效,之后再更新一次即可。如果一直不消失,也检查一下根目录有没有残留的.maintenance文件,必要时手动更新WordPress,官方有手动更新的说明。
自动更新是不是该开,以及怎么设置,见《安装WordPress后必做的10项设置》。
七、上传文件超过大小限制
意思:上传主题、插件、图片、备份时,提示文件超过了upload_max_filesize的限制,或者提示「已超过此站点的最大上传大小」。
原因:这个限制由主机的PHP参数决定,不是WordPress设的。
解决方法
- 把
upload_max_filesize和post_max_size一起调大,两个值取较小的那个生效; - 同时把
memory_limit和max_execution_time调到合适的值; - 各家主机的位置:Hostinger的PHP Configuration、SiteGround的PHP Manager、Cloudways的Settings & Packages,见上面几篇的链接;
- 导入网站备份时遇到的限制,见《All-in-One WP Migration搬家教程》,里面讲得更细;
- 实在调不大的,换成FTP上传:主题和插件解压后上传到
wp-content/themes或wp-content/plugins,图片用FTP上传到wp-content/uploads,不过FTP上传的图片不会出现在媒体库,需要插件重新扫描。
八、ERR_TOO_MANY_REDIRECTS(重定向次数过多)
意思:浏览器显示「该网页无法正常运作」或「重定向次数过多」,网站在不停地跳转,打不开。
常见原因:
- 网址设置(「设置 → 常规」里的WordPress地址和站点地址)一个是
http、一个是https,或者一个带www、一个不带; - 强制HTTPS的设置被设了两次,比如主机和插件都在跳转;
- 用了Cloudflare,SSL模式选成了Flexible,而服务器上也强制了HTTPS,两边互相跳转;
- 缓存插件缓存了错误的跳转。
解决方法
- 清除浏览器缓存和Cookie,或者换无痕窗口访问;
- 后台能进的话,检查「设置 → 常规」的两个网址是否一致;后台进不去,就在
wp-config.php里临时写死(代码见下方),问题解决之后建议删掉,改回后台设置; - 只让一个地方负责跳转:要么主机,要么插件,要么
.htaccess; - 如果用了Cloudflare,SSL模式改成Full(Strict);
- 停用缓存插件或清除缓存。
第2步临时写死网址的代码:
define( 'WP_HOME', 'https://你的域名' );
define( 'WP_SITEURL', 'https://你的域名' );
SSL和HTTPS的设置,见《SiteGround怎么安装免费SSL证书并强制HTTPS?》《Cloudways怎么用免费Cloudflare?》。
九、文章和页面打开是404,只有首页正常
意思:首页能开,文章、分类、页面全都是404。
原因:固定链接的重写规则丢了,常见于刚迁移网站、改过固定链接结构、.htaccess被覆盖,或者服务器没开启URL重写功能(Apache的mod_rewrite)。
解决方法
- 后台进入「设置 → 固定链接」,不改任何东西,直接点「保存更改」,重新生成规则;
- 不行的话,检查网站根目录的
.htaccess是否存在,且包含WordPress的规则。没有的话,自己加上; - 还是不行,让主机确认是否开启了mod_rewrite;
- 使用自定义文章类型出现404,也是同样的处理:先保存一次固定链接来刷新规则。
固定链接怎么选,见《WordPress菜单、首页和固定链接怎么设置?》。
十、The link you followed has expired(链接已过期)
意思:上传主题或插件的zip文件时,页面提示「您点击的链接已过期」。
原因:多数时候是因为文件超过了上传大小限制,也可能是执行时间太短。
解决方法:按第七项调大PHP的上传限制和执行时间;或者解压后用FTP上传主题、插件文件夹。
十一、修改后没有变化,或页面显示的还是旧内容
意思:明明在后台改了,前台看还是旧的。
原因:浏览器缓存、WordPress缓存插件的页面缓存、主机的服务器缓存、CDN缓存都可能。
解决方法:从近到远依次清理:浏览器强制刷新或无痕窗口,缓存插件的「清除全部缓存」,主机后台的缓存,最后是Cloudflare等CDN的缓存。缓存的原理和设置,见《Hostinger LiteSpeed Cache怎么设置》和《什么是CDN?》。
什么时候该恢复备份或找客服?
直接恢复备份:
- 刚更新或改动完就出问题,而你有改动前的备份;
- 排查了半小时仍没有头绪;
- 怀疑被黑,页面出现陌生内容,别的账号被创建。
找主机客服:
- 报错与服务器有关:数据库服务连不上、磁盘满了、进程数或内存超限、mod_rewrite没开;
- 日志里有你看不懂的服务器层面报错;
- 主机后台也打不开。
联系客服时,把出错的页面截图、你最近做的改动、错误日志里的内容一起发过去,能少来回几次。各家的联系方式见《Cloudways怎么联系客服》。
预防比排查更重要
- 更新前先备份,保留至少两周的历史备份;
- 插件、主题不要乱装,停用不用的,删除;
- 改动先在测试站做:很多主机提供Staging测试站,大的改动先在测试站试,Cloudways的做法见《Cloudways后台常用设置》;
- PHP版本和插件兼容性:升级PHP之前先确认WordPress、主题和插件都支持;
- 平时的安全加固,见《WordPress网站安全设置》。
总结
常见报错的快速对照:
| 报错 | 先做什么 |
|---|---|
| 建立数据库连接时出错 | 核对wp-config.php的数据库信息,再用WP_ALLOW_REPAIR修复 |
| 致命错误/白屏 | 看管理员邮件,停用插件(改plugins文件夹名),换默认主题 |
| 500错误 | 重命名.htaccess,再停用插件 |
| 内存耗尽 | 调大WP_MEMORY_LIMIT和PHP的memory_limit |
| 维护模式卡住 | 删根目录的.maintenance文件 |
| 上传超限/链接已过期 | 同时调大upload_max_filesize和post_max_size |
| 重定向次数过多 | 统一网址设置,只留一处强制HTTPS,Cloudflare用Full(Strict) |
| 文章404 | 保存一次固定链接 |
记住共同的规律:先备份,再看日志,最近动了什么就先退回什么。多数报错三步之内就能找到原因。



