记录一次WordPress 又拍云插件上传失败问题排查与解决记录

WordPress 又拍云插件上传失败问题排查与解决记录

一、问题现象

在 WordPress 后台媒体库上传图片时,始终提示:

上传时发生了错误。请稍后再试。

无论是否启用 WPUpYun 插件,错误均存在。即使将插件所有钩子注释、甚至重命名插件目录,问题依旧。

二、环境信息

  • WordPress 版本:6.x(未精确)

  • 又拍云服务名称:xxxxxx

  • 加速域名:https://xxxxxxx.cn

  • 操作员:ccccc

  • 服务器环境:Nginx + PHP 7.4+,test_upload.php 独立上传测试成功(说明 PHP 上传功能正常)

三、排查过程

3.1 初步怀疑插件问题

  1. 关闭插件所有钩子(wp_handle_uploadwp_generate_attachment_metadatawp_unique_filename 等),错误依旧。

  2. 将插件目录重命名,彻底禁用插件,错误依旧 → 问题与插件无关

3.2 独立测试又拍云 API

创建 test2.php(使用又拍云官方 SDK),直接上传文件到又拍云:

  • 初始返回 401 signature error → 操作员密码错误。

  • 通过又拍云控制台重置操作员密码,测试脚本成功输出“✅ 上传成功”。

结论:又拍云配置本身正确,插件未上传是因其他原因。

3.3 发现核心文件损坏

在浏览器开发者工具 → 网络标签中,查看上传请求的响应,发现致命错误:

text
Fatal error: Uncaught Error: Call to undefined function add_filter() in /www/wwwroot/1080px.cn/wp-admin/async-upload.php:3

根本原因wp-admin/async-upload.php 文件被篡改,第3行调用了不存在的 add_filter() 函数,导致整个上传流程崩溃。

四、解决方案

  1. 恢复原始核心文件

    • 从 WordPress 官网下载与当前站点相同版本的安装包。

    • 用包中的 wp-admin/async-upload.php 覆盖服务器上的同名文件。

    • 为了安全,同时覆盖整个 wp-admin 和 wp-includes 目录。

  2. 重新启用插件并配置正确密码

    • 在 WordPress 后台激活 WPUpYun 插件。

    • 填入正确的服务名称 gaoqingwang、操作员名 sunhua 及重置后的密码。

    • 绑定加速域名 https://img.1080px.cn

  3. 测试上传
    上传一张图片,通过加速域名访问成功,返回 200 OK。

五、预防措施

  1. 禁止修改 WordPress 核心文件
    所有自定义代码应放在主题 functions.php 或自定义插件中。

  2. 定期检查核心文件完整性

    • 使用插件 Integrity Checker 扫描核心文件。

    • 通过 cPanel 的 WordPress Toolkit 或类似工具一键修复。

  3. 保留调试日志
    在 wp-config.php 中开启:

    php
    define('WP_DEBUG', true);
    define('WP_DEBUG_LOG', true);
    define('WP_DEBUG_DISPLAY', false);

    错误会记录到 /wp-content/debug.log,方便后续排查。

  4. 又拍云操作员密码管理

    • 控制台生成的 32 位随机密码务必保存。

    • 如需自定义密码,可用浏览器开发者工具移除密码输入框的 disabled 属性后手动设置。

    • 定期检查操作员权限(读取、写入、删除)。

  5. 插件设置建议

    • 开启“自动重命名”避免文件名冲突。

    • 根据需求决定是否“不在本地保存”。

    • 如果不需要多种缩略图,可开启“禁止缩略图”。

六、总结

本次问题的根本原因是 WordPress 核心文件被破坏,导致上传接口直接崩溃,与又拍云插件本身无关。同时,又拍云操作员密码配置错误也是阻碍测试的因素之一。通过还原核心文件 + 正确配置插件,最终成功恢复上传功能。

记录日期:2026-04-16

上一篇 拍照图片上传
下一篇 今日成都天气情况简报