WordPress 又拍云插件上传失败问题排查与解决记录
一、问题现象
在 WordPress 后台媒体库上传图片时,始终提示:
上传时发生了错误。请稍后再试。
无论是否启用 WPUpYun 插件,错误均存在。即使将插件所有钩子注释、甚至重命名插件目录,问题依旧。
二、环境信息
-
WordPress 版本:6.x(未精确)
-
又拍云服务名称:
xxxxxx -
加速域名:
https://xxxxxxx.cn -
操作员:
ccccc -
服务器环境:Nginx + PHP 7.4+,
test_upload.php独立上传测试成功(说明 PHP 上传功能正常)
三、排查过程
3.1 初步怀疑插件问题
-
关闭插件所有钩子(
wp_handle_upload、wp_generate_attachment_metadata、wp_unique_filename等),错误依旧。 -
将插件目录重命名,彻底禁用插件,错误依旧 → 问题与插件无关。
3.2 独立测试又拍云 API
创建 test2.php(使用又拍云官方 SDK),直接上传文件到又拍云:
-
初始返回
401 signature error→ 操作员密码错误。 -
通过又拍云控制台重置操作员密码,测试脚本成功输出“✅ 上传成功”。
结论:又拍云配置本身正确,插件未上传是因其他原因。
3.3 发现核心文件损坏
在浏览器开发者工具 → 网络标签中,查看上传请求的响应,发现致命错误:
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() 函数,导致整个上传流程崩溃。
四、解决方案
-
恢复原始核心文件
-
从 WordPress 官网下载与当前站点相同版本的安装包。
-
用包中的
wp-admin/async-upload.php覆盖服务器上的同名文件。 -
为了安全,同时覆盖整个
wp-admin和wp-includes目录。
-
-
重新启用插件并配置正确密码
-
在 WordPress 后台激活 WPUpYun 插件。
-
填入正确的服务名称
gaoqingwang、操作员名sunhua及重置后的密码。 -
绑定加速域名
https://img.1080px.cn。
-
-
测试上传
上传一张图片,通过加速域名访问成功,返回 200 OK。
五、预防措施
-
禁止修改 WordPress 核心文件
所有自定义代码应放在主题functions.php或自定义插件中。 -
定期检查核心文件完整性
-
使用插件 Integrity Checker 扫描核心文件。
-
通过 cPanel 的 WordPress Toolkit 或类似工具一键修复。
-
-
保留调试日志
在wp-config.php中开启:define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', false);
错误会记录到
/wp-content/debug.log,方便后续排查。 -
又拍云操作员密码管理
-
控制台生成的 32 位随机密码务必保存。
-
如需自定义密码,可用浏览器开发者工具移除密码输入框的
disabled属性后手动设置。 -
定期检查操作员权限(读取、写入、删除)。
-
-
插件设置建议
-
开启“自动重命名”避免文件名冲突。
-
根据需求决定是否“不在本地保存”。
-
如果不需要多种缩略图,可开启“禁止缩略图”。
-
六、总结
本次问题的根本原因是 WordPress 核心文件被破坏,导致上传接口直接崩溃,与又拍云插件本身无关。同时,又拍云操作员密码配置错误也是阻碍测试的因素之一。通过还原核心文件 + 正确配置插件,最终成功恢复上传功能。
记录日期:2026-04-16