该错误源于WordPress自动检测到的后台锁文件未正常释放,核心解决方案是手动删除wp-content目录下的maintenance.php文件,或检查数据库中的transient锁键值。
当你满怀期待地点击“立即更新”后,屏幕突然变白,或者停留在“正在执行维护模式…”的界面,这种焦虑感很多站长都经历过,这不仅仅是网络卡顿,而是WordPress的“自我保护机制”卡住了,系统为了防止数据在更新过程中损坏,会创建一个临时的锁,一旦这个锁因为服务器超时、内存不足或插件冲突而无法正常移除,你就会看到“另一个更新正在进行”的提示。
为什么会出现“另一个更新正在进行”错误?
理解错误背后的逻辑,比盲目操作更重要,WordPress在升级核心、主题或插件时,会在数据库中写入一个临时的选项(transient),并在文件系统中生成一个维护文件,正常情况下,升级完成后,这两个“路障”会被自动清除,但如果升级过程被意外中断比如你刷新了页面、浏览器崩溃,或者服务器内存溢出(OOM)这些路障就会残留下来,误导系统认为当前仍有任务在运行。
业内专家指出,这种情况在共享主机环境中尤为常见,因为共享主机的资源限制往往比VPS或云服务器更为严格,当多个用户同时访问或执行高负载操作时,PHP执行时间容易超时,导致升级脚本未能完整执行。
常见触发场景分析
为了更精准地定位问题,我们需要回顾一下升级时的具体情境,多数情况下,以下场景最容易导致锁文件残留:
- 手动强制刷新页面:在进度条加载时,因焦虑而多次点击刷新或关闭标签页。
- 服务器资源瓶颈:服务器内存低于WordPress运行的最低要求,导致进程被操作系统强制终止。
- 插件冲突:某些安全插件或缓存插件拦截了升级请求,导致回调函数失效。
- 网络波动:在跨国访问或网络不稳定时,数据包丢失导致升级脚本未能收到完成信号。

第一步:清理维护文件(最直接的修复方案)
这是解决该错误最快、最有效的方法,适用于90%以上的常规情况,WordPress使用一个名为maintenance.php的文件来标记站点处于维护模式,如果这个文件在升级结束后没有被删除,站点就会一直显示错误或空白。
通过FTP或文件管理器删除文件
你需要连接到你的网站服务器,你可以使用FileZilla等FTP客户端,或者直接使用主机控制面板(如cPanel、宝塔面板)中的文件管理器。
- 进入网站的根目录,通常位于
public_html或www文件夹下。 - 找到
wp-content目录并点击进入。 - 查找名为
maintenance.php的文件。 - 右键点击该文件,选择“删除”或“重命名”,建议先重命名为
maintenance.php.bak作为备份,以防万一。 - 刷新你的网站前台,看看是否恢复正常。
如果前台恢复正常,但后台仍然报错,说明问题可能不在文件层面,而在数据库层面。
第二步:清除数据库中的临时锁键值
如果删除文件无效,问题很可能出在数据库的wp_options表中,WordPress使用_transient_core_updater等键值来存储升级状态,如果这些键值没有被正确清除,系统会误判。
使用phpMyAdmin手动清理
登录你的数据库管理工具,找到当前网站对应的数据库。
- 点击左侧的
wp_options表(注意:如果你的数据库表前缀不是默认的wp_,请替换为实际前缀,如wp123_options)。 - 在搜索框中输入
_transient,筛选出所有以该字符串开头的选项。 - 仔细查找包含
core_updater、或
update_core
update_plugins的条目。 - 勾选这些条目,执行“删除”操作。
- 同样,检查并删除
_site_transient开头的类似条目,特别是针对多站点网络的用户。
使用WP-CLI命令快速清理
如果你熟悉命令行,WP-CLI是更高效的选择,SSH登录服务器后,执行以下命令:
- 列出所有transient:
wp transient list - 删除所有transient:
wp transient delete --all
这种方法干净利落,避免了在数据库中手动搜索的繁琐和误删风险。
第三步:排查插件与主题冲突
错误并非由残留文件引起,而是由正在运行的冲突导致,某些缓存插件或安全插件会锁定数据库连接,阻止新的升级任务启动。
禁用所有插件进行隔离测试
- 通过FTP进入
wp-content/plugins目录。 - 将
plugins文件夹重命名为plugins_old。 - 在
wp-content下新建一个名为plugins的空文件夹。 - 尝试再次执行更新,如果成功,说明是某个插件导致的问题。
- 逐一恢复插件,每次恢复一个后测试更新,直到找到罪魁祸首。
业内共识认为,缓存插件和对象缓存插件(如Redis、Memcached配置不当)是导致此类问题的第二大原因,建议升级前暂时禁用这些插件,升级完成后再重新启用并清理缓存。
切换至默认主题
如果插件排查无果,尝试将当前主题切换为WordPress默认的Twenty Twenty-Four主题,某些自定义主题可能包含有缺陷的钩子(Hooks),干扰了升级流程。
预防胜于治疗:如何避免再次发生?
修复错误只是治标,建立正确的维护习惯才能治本。
优化服务器环境
- 增加PHP内存限制:确保
wp-config.php中的WP_MEMORY_LIMIT设置为至少,推荐
256M
512M。 - 调整PHP执行时间:在
.htaccess或php.ini中增加max_execution_time,给升级脚本足够的完成时间。 - 使用专用主机:对于高流量或大型网站,建议使用VPS或云服务器,避免共享主机的资源竞争。
采用分批升级策略
不要一次性升级所有插件和核心。
- 先升级WordPress核心。
- 等待核心稳定运行几天后,再逐一升级插件。
- 每次只升级一个主要插件,观察网站状态。
Q&A:另一个更新正在进行”的常见问题
删除maintenance.php后网站还是打不开怎么办?
如果删除文件后网站仍无法访问,可能是缓存问题或权限问题,清除浏览器缓存和CDN缓存,检查wp-content目录及其子文件的权限,确保Web服务器用户(如www-data)拥有读取和执行权限,通常文件夹权限应为755,文件权限应为644,如果问题依旧,检查wp-config.php文件是否因编辑错误而损坏。
为什么我的数据库里没有看到transient键值?
这通常意味着锁文件(maintenance.php)是主要问题,或者数据库表前缀被修改过,请再次确认数据库表前缀,并在wp_options表中搜索option_name包含_transient的记录,如果确实没有记录,但错误依然存在,可能是服务器端的OPcache缓存了旧的脚本状态,尝试重启PHP-FPM服务或清除服务器级缓存。
使用WP-CLI清理transient会影响网站正常运行吗?
WP-CLI是WordPress官方推荐的命令行工具,其操作是原子性的,不会影响正在运行的网站服务,删除transient只是清理临时的升级状态信息,不会删除任何文章、页面或用户数据,但在操作前,建议备份数据库,以防万一,操作完成后,建议刷新一下网站,确保状态同步。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/407334.html
