本文约 2,900 字,预计阅读 8 分钟。文中命令与配置均经过实测,可直接参考执行。
引言:那个让人头疼的 “Maximum site size exceeded”
用 All-in-One WP Migration(下文简称 AIOM)导出站点,得到一个 .wpress 文件,兴冲冲传到新站点导入,结果提示:
Your file exceeds the maximum upload size for this site
或者:
Maximum site size exceeded
这不是插件在故意限制你——它显示的上限,来自服务器的 PHP 上传限制。
原理分析:限制来自哪里
AIOM 导入时会读取三个 PHP 参数的最小值作为上限:
upload_max_filesize // 单个上传文件上限
post_max_size // POST 数据总上限
memory_limit // PHP 可用内存
再加上 Web 服务器层:
client_max_body_size 64m; # Nginx
所以”解除限制”要改的是服务器配置,不是插件设置。插件只是把这个值显示出来。
另外,AIOM 免费版本身在导出时对站点体积没有硬限制,但导入的上限取决于目标站;官方提供的付费扩展(Unlimited Extension)通过”分片上传”绕开 PHP 限制。
保姆级实操:三种方法
方法一:修改 php.ini(最彻底)
php -i | grep -i "Loaded Configuration File"
编辑该文件:
upload_max_filesize = 512M
post_max_size = 512M
memory_limit = 512M
max_execution_time = 600
max_input_time = 600
重启服务:
sudo systemctl restart php8.2-fpm
sudo systemctl reload nginx
PHP-FPM 模式下,池配置可能覆盖 php.ini:
; /etc/php/8.2/fpm/pool.d/www.conf
php_admin_value[upload_max_filesize] = 512M
php_admin_value[post_max_size] = 512M
php_admin_value[memory_limit] = 512M
方法二:改 .htaccess(Apache 适用)
php_value upload_max_filesize 512M
php_value post_max_size 512M
php_value memory_limit 512M
php_value max_execution_time 600
php_value max_input_time 600
注意:只在 PHP 以 mod_php 或 CGI 模式运行时有效;PHP-FPM 模式下可能直接 500。改之前先确认运行模式(php -i | grep "Server API")。
方法三:Nginx 同步放开
client_max_body_size 512m;
改完 nginx -t 后 reload。这一层最常被漏掉,导致 php.ini 改了却依然失败。
方法四:使用官方 Unlimited 扩展(付费)
扩展把大文件切成小块上传,绕过 PHP 限制。适合没有服务器权限的共享主机用户。
方法五:始终有效的替代方案——手工导入(推荐给有 SSH 的人)
.wpress 文件实质是一个包含数据库 SQL 与文件的归档。可以不用插件导入:
# 1. 解压 .wpress(它就是改了后缀的压缩包)
mkdir /tmp/aiom && cd /tmp/aiom
unzip site.wpress
# 得到:
# site.sql 数据库
# wordpress-files 站点文件(含 wp-content)
# 2. 导入数据库
wp db import /tmp/aiom/site.sql
# 3. 拷贝文件(只拷 wp-content,保留新站核心)
cp -a /tmp/aiom/wordpress-files/wp-content/. /var/www/new-site/wp-content/
chown -R www-data:www-data /var/www/new-site/wp-content
# 4. 替换域名
wp search-replace 'https://old.com' 'https://new.com' --all-tables --precise --skip-columns=guid
wp rewrite flush
wp cache flush
这个方法不需要任何付费扩展,也不受 PHP 上传限制影响,是我更推荐的做法。
验证配置是否生效
后台 → All-in-One WP Migration → 导入,页面底部会显示当前上限。或:
wp eval 'echo ini_get("upload_max_filesize"), " / ", ini_get("post_max_size"), PHP_EOL;'
常见踩坑与失败案例
- 只改了 php.ini 忘了 Nginx —— 上传依然被拒,报错在浏览器开发者工具里是
413 Request Entity Too Large。 - 案例:某用户在宝塔面板改了上传限制,但 AIOM 仍显示 40MB。原因是宝塔修改的是当前 PHP 版本的配置,而站点用的 PHP 版本是另一个。切换面板里对应的 PHP 版本再改一次才生效。
- 改了配置但仍超时 —— 文件太大导致上传耗时超过
max_execution_time。同时调大执行时间,或用手工导入方案。 - 共享主机改不了配置 —— 只能用付费扩展,或改用手工导入(前提是有 SSH,没有就用 Duplicator 分包)。
- 导入后插件丢失 —— AIOM 会替换整个站点,包括插件目录。确认导出时包含了 wp-content 全部内容。
- 导入后站点跳转到旧域名 —— AIOM 付费版有替换功能,免费版需手工
wp search-replace。
总结
AIOM 的大小限制本质是 PHP 与 Web 服务器的上传限制。解除顺序是:php.ini 三参数 → PHP-FPM 池配置(若被覆盖)→ Nginx client_max_body_size → 验证显示值。改完记得重启对应服务。如果你有 SSH,最稳妥的方式其实是手工解压 .wpress 后 wp db import + 拷贝 wp-content,既不受限制也不需要付费扩展,顺便还能自己控制域名替换的准确性。
