搜索全站
安装部署 8 分钟阅读

All-in-One WP Migration 解除导入大小限制:三种有效方法

All-in-One WP Migration 免费版默认导入上限较小,大站点会提示超出限制。本文讲清限制的来源(PHP 参数而非插件本身)、三种可靠的解除方法(修改 php.ini、htaccess、使用官方扩展包),以及始终有效的替代方案(手工导入数据库与文件)。

U
UFO_PF 2019-06-28 · 阅读 8 分钟
Al 安装部署
阅读提示
本文约 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;'

常见踩坑与失败案例

  1. 只改了 php.ini 忘了 Nginx —— 上传依然被拒,报错在浏览器开发者工具里是 413 Request Entity Too Large。
  2. 案例:某用户在宝塔面板改了上传限制,但 AIOM 仍显示 40MB。原因是宝塔修改的是当前 PHP 版本的配置,而站点用的 PHP 版本是另一个。切换面板里对应的 PHP 版本再改一次才生效。
  3. 改了配置但仍超时 —— 文件太大导致上传耗时超过 max_execution_time。同时调大执行时间,或用手工导入方案。
  4. 共享主机改不了配置 —— 只能用付费扩展,或改用手工导入(前提是有 SSH,没有就用 Duplicator 分包)。
  5. 导入后插件丢失 —— AIOM 会替换整个站点,包括插件目录。确认导出时包含了 wp-content 全部内容。
  6. 导入后站点跳转到旧域名 —— AIOM 付费版有替换功能,免费版需手工 wp search-replace。

总结

AIOM 的大小限制本质是 PHP 与 Web 服务器的上传限制。解除顺序是:php.ini 三参数 → PHP-FPM 池配置(若被覆盖)→ Nginx client_max_body_size → 验证显示值。改完记得重启对应服务。如果你有 SSH,最稳妥的方式其实是手工解压 .wpress 后 wp db import + 拷贝 wp-content,既不受限制也不需要付费扩展,顺便还能自己控制域名替换的准确性。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。