WordPress常见报错汇总:数据库连接错误、白屏、500、维护模式卡住怎么解决

蜗牛大人WordPress建站教程

WordPress网站出问题时,页面上显示的往往只是一句英文报错,或者干脆一片空白。其实常见的报错就那么十来种,成因和处理方法都很固定。

本文把这些报错汇总到一起,每一项先讲是什么意思,再给出排查顺序。主机专属的版本这里不重复,需要的话看文末的链接。

排查之前先做三件事

  1. 先备份:改文件、改数据库之前,先备份一份,至少把要改的文件复制一个副本。几种备份方式见《WordPress网站怎么备份?》;
  2. 确认是不是只有你自己看到:换手机流量、换浏览器无痕窗口访问,排除浏览器缓存和本地网络的问题;
  3. 回想最近改过什么:更新了哪个插件、主题,装了什么新东西,改过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里的数据库信息不对(刚迁移网站、改过密码之后最常见)、数据库用户权限不对、数据库表损坏、服务器数据库服务暂时挂了、数据库空间满了。

排查顺序

  1. 打开wp-config.php,核对DB_NAME、DB_USER、DB_PASSWORD、DB_HOST四项和主机后台里数据库的信息是否一致。DB_HOST大部分主机是localhost,少数主机是单独的地址,以主机后台为准;
  2. 密码对不上的话,在主机后台重置数据库用户的密码,再同步填进wp-config.php;
  3. 在wp-config.php里加入修复开关,然后访问修复页面(代码见下方),选择修复数据库;
  4. 只有后台打不开、前台正常,或者反过来,通常是siteurl和home的值不对,在phpMyAdmin里检查wp_options表;
  5. 联系主机客服,确认数据库服务有没有故障,或者数据库空间、磁盘空间是不是用满了;
  6. 网站是不是被入侵了。如果以上都正常,用扫描工具检查一下,被黑的处理见《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版本和插件不兼容、内存不够、文件损坏。

排查顺序

  1. 看管理员邮箱:WordPress会把详细的错误和一个恢复模式的登录链接发给站点的管理员邮箱,点链接可以登录后台,WordPress会提示是哪个插件或主题出错,直接停用它;
  2. 停用所有插件:后台能进,就在插件页批量停用;进不去,就用FTP把wp-content/plugins文件夹改名,比如改成plugins_old,再访问网站。能打开的话,说明问题出在某个插件上。再把文件夹名改回来,进入后台逐个启用,找到引起问题的那个;
  3. 换成默认主题:停用插件没用,就把当前主题的文件夹改名,WordPress会自动回退到默认的Twenty Twenty-几主题;
  4. 开调试日志:按上面第一步的方法,看日志里指向的文件;
  5. 检查PHP版本:刚升级过PHP的话,退回上一个版本试试,看是否好转,各家主机切换PHP的位置不一样,SiteGround见《Siteground怎么切换PHP版本》,Hostinger见《Hostinger怎么切换PHP版本》;
  6. 调大内存:见下面的第四项;
  7. 还是不行,从备份恢复。

三、500 Internal Server Error(内部服务器错误)

意思:服务器处理请求时出了问题,但没有告诉你具体原因。这是个笼统的报错,WordPress官方给的排查顺序是:

  1. 重命名.htaccess:用FTP把网站根目录的.htaccess改名为.htaccess_old,再访问网站。如果恢复正常,说明是这个文件里的规则出了问题(文件是隐藏文件,要开启显示隐藏文件)。然后进入后台「设置 → 固定链接」,不改任何东西直接点保存,WordPress会重新生成一份新的.htaccess;
  2. 停用所有插件,方法同上;
  3. 换成默认主题;
  4. 调大PHP内存限制;
  5. 重新上传核心文件:从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文件,让网站进入维护模式,更新完会自动删除。如果更新中途被打断,这个文件就留下来了,网站就一直显示这句话。

解决方法

  1. 先等一两分钟,更新可能还没结束;
  2. 用FTP或文件管理器进入网站根目录,找到.maintenance,删除它;
  3. 刷新网站。该文件名以点开头,要显示隐藏文件才能看到;
  4. 回到后台,检查刚才更新的插件或主题是不是完整,必要时重新更新一次。

六、更新失败,提示另一个更新正在进行

更新WordPress核心时被打断,会提示有另一个更新正在进行。这是WordPress的更新锁,通常约15分钟后自动失效,之后再更新一次即可。如果一直不消失,也检查一下根目录有没有残留的.maintenance文件,必要时手动更新WordPress,官方有手动更新的说明。

自动更新是不是该开,以及怎么设置,见《安装WordPress后必做的10项设置》。

七、上传文件超过大小限制

意思:上传主题、插件、图片、备份时,提示文件超过了upload_max_filesize的限制,或者提示「已超过此站点的最大上传大小」。

原因:这个限制由主机的PHP参数决定,不是WordPress设的。

解决方法

  1. 把upload_max_filesize和post_max_size一起调大,两个值取较小的那个生效;
  2. 同时把memory_limit和max_execution_time调到合适的值;
  3. 各家主机的位置:Hostinger的PHP Configuration、SiteGround的PHP Manager、Cloudways的Settings & Packages,见上面几篇的链接;
  4. 导入网站备份时遇到的限制,见《All-in-One WP Migration搬家教程》,里面讲得更细;
  5. 实在调不大的,换成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,两边互相跳转;
  • 缓存插件缓存了错误的跳转。

解决方法

  1. 清除浏览器缓存和Cookie,或者换无痕窗口访问;
  2. 后台能进的话,检查「设置 → 常规」的两个网址是否一致;后台进不去,就在wp-config.php里临时写死(代码见下方),问题解决之后建议删掉,改回后台设置;
  3. 只让一个地方负责跳转:要么主机,要么插件,要么.htaccess;
  4. 如果用了Cloudflare,SSL模式改成Full(Strict);
  5. 停用缓存插件或清除缓存。

第2步临时写死网址的代码:

define( 'WP_HOME', 'https://你的域名' );
define( 'WP_SITEURL', 'https://你的域名' );

SSL和HTTPS的设置,见《SiteGround怎么安装免费SSL证书并强制HTTPS?》《Cloudways怎么用免费Cloudflare?》。

九、文章和页面打开是404,只有首页正常

意思:首页能开,文章、分类、页面全都是404。

原因:固定链接的重写规则丢了,常见于刚迁移网站、改过固定链接结构、.htaccess被覆盖,或者服务器没开启URL重写功能(Apache的mod_rewrite)。

解决方法

  1. 后台进入「设置 → 固定链接」,不改任何东西,直接点「保存更改」,重新生成规则;
  2. 不行的话,检查网站根目录的.htaccess是否存在,且包含WordPress的规则。没有的话,自己加上;
  3. 还是不行,让主机确认是否开启了mod_rewrite;
  4. 使用自定义文章类型出现404,也是同样的处理:先保存一次固定链接来刷新规则。

固定链接怎么选,见《WordPress菜单、首页和固定链接怎么设置?》。

意思:上传主题或插件的zip文件时,页面提示「您点击的链接已过期」。

原因:多数时候是因为文件超过了上传大小限制,也可能是执行时间太短。

解决方法:按第七项调大PHP的上传限制和执行时间;或者解压后用FTP上传主题、插件文件夹。

十一、修改后没有变化,或页面显示的还是旧内容

意思:明明在后台改了,前台看还是旧的。

原因:浏览器缓存、WordPress缓存插件的页面缓存、主机的服务器缓存、CDN缓存都可能。

解决方法:从近到远依次清理:浏览器强制刷新或无痕窗口,缓存插件的「清除全部缓存」,主机后台的缓存,最后是Cloudflare等CDN的缓存。缓存的原理和设置,见《Hostinger LiteSpeed Cache怎么设置》和《什么是CDN?》。

什么时候该恢复备份或找客服?

直接恢复备份:

  • 刚更新或改动完就出问题,而你有改动前的备份;
  • 排查了半小时仍没有头绪;
  • 怀疑被黑,页面出现陌生内容,别的账号被创建。

找主机客服:

  • 报错与服务器有关:数据库服务连不上、磁盘满了、进程数或内存超限、mod_rewrite没开;
  • 日志里有你看不懂的服务器层面报错;
  • 主机后台也打不开。

联系客服时,把出错的页面截图、你最近做的改动、错误日志里的内容一起发过去,能少来回几次。各家的联系方式见《Cloudways怎么联系客服》。

预防比排查更重要

  1. 更新前先备份,保留至少两周的历史备份;
  2. 插件、主题不要乱装,停用不用的,删除;
  3. 改动先在测试站做:很多主机提供Staging测试站,大的改动先在测试站试,Cloudways的做法见《Cloudways后台常用设置》;
  4. PHP版本和插件兼容性:升级PHP之前先确认WordPress、主题和插件都支持;
  5. 平时的安全加固,见《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保存一次固定链接

记住共同的规律:先备份,再看日志,最近动了什么就先退回什么。多数报错三步之内就能找到原因。

文章版权归作者所有,转载请注明出处:https://woniune.com/posts/wordpress-common-errors/
上一篇WordPress做B2B产品展示:WooCommerce还是自定义文章类型?三种方案怎么选

相关推荐