跳到内容

如何修改 WordPress 的上传上限

介绍提升 WordPress 媒体上传上限的 5 种方法。请根据服务器环境与所用主机服务选择最合适的方式。

实际限制 = 各层最小值 nginx / Apache (proxy) client_max_body_size php.ini post_max_size whole POST php.ini upload_max_filesize per file WP_MEMORY_LIMIT (wp-config) PHP memory 从上到下各层都生效,最小值即实际限制
图:决定 WordPress 上传限制的配置层级

确认当前的上传上限

WordPress 后台的「媒体」→「添加新项目」页面会显示「最大上传文件大小: ○○MB」,「站点健康」的「信息」标签页也可查看底层 PHP 配置值。默认情况下,WordPress 通常继承 PHP 的 2MB~10MB 限制。

实际上限取决于以下三个配置值中的最小值。

  • upload_max_filesize — 单个文件的最大大小
  • post_max_size — 整个 POST 请求的最大大小(必须大于 upload_max_filesize)
  • memory_limit — PHP 可使用的内存上限

方法 1:编辑 wp-config.php

最简单的方式:在 WordPress 根目录的 wp-config.php 中添加以下一行。

@ini_set('upload_max_filesize', '64M');

但若主机禁用了 ini_set,此法无效,请改用其他方法。若想更可靠,也可以如下使用 define

define('WP_MEMORY_LIMIT', '256M');

该设置会提高 WordPress 的内存上限,但不会直接改变上传上限。请与下列方法配合使用。

方法 2:编辑 .htaccess(Apache)

若 Apache 服务器使用 mod_php,请在 WordPress 根目录的 .htaccess 中添加以下内容。

php_value upload_max_filesize 64M
php_value post_max_size 128M
php_value memory_limit 256M
php_value max_execution_time 300
php_value max_input_time 300

注意:在以 CGI 或 FastCGI 方式运行 PHP 的环境(多数虚拟主机)中,.htaccess 无法修改 PHP 设置,此法不适用。若出现 500 错误,请删除所添加的行。

方法 3:编辑 php.ini / .user.ini

直接编辑 PHP 配置文件是修改这些值最可靠的方式,前提是你拥有相应权限。

在 php.ini 中

upload_max_filesize = 64M
post_max_size = 128M
memory_limit = 256M
max_execution_time = 300
max_input_time = 300

在 .user.ini 中(适用于共享主机)

若主机不允许直接编辑 php.ini,可在 WordPress 根目录创建 .user.ini 并写入相同内容。生效可能需要数分钟至数小时。

upload_max_filesize = 64M
post_max_size = 128M
memory_limit = 256M

方法 4:在 functions.php 中添加过滤器

在主题的 functions.php 中添加过滤钩子。适用于无法修改 PHP 配置的场景,但无法超过服务器端的 PHP 设置。

@ini_set('upload_max_filesize', '64M');
@ini_set('post_max_size', '128M');
@ini_set('memory_limit', '256M');
@ini_set('max_execution_time', '300');
@ini_set('max_input_time', '300');

或者可以通过 WordPress 过滤器设置上限。

add_filter('upload_size_limit', function($size) {
    return 64 * 1024 * 1024; // 64MB
});

注意:此法仅修改 WordPress 侧的上限;若 PHP 自身的 upload_max_filesize 更小,则以 PHP 为准。

方法 5:在主机控制面板中修改

日本主流虚拟主机均可在控制面板中修改 PHP 设置,这是最安全可靠的方式。

Xserver(日本主机商)

  1. 登录服务器面板
  2. 选择「PHP」→「php.ini 设置」
  3. 选择目标域名
  4. 打开「php.ini 设置修改」标签页
  5. upload_max_filesizepost_max_size 改为所需值
  6. 点击「进入确认画面」→「修改」

ConoHa WING

  1. 登录控制面板
  2. 「站点管理」→「站点设置」→「高级设置」
  3. 在「PHP 设置」中修改 upload_max_filesize

SAKURA Internet

  1. 登录控制面板
  2. 「脚本设置」→「php.ini 设置」
  3. 修改配置值并保存

修改后的测试

修改配置后,请实际上传一个大文件确认效果。使用 DevLab 的阈值测试文件,可对所设上限进行精确的边界值测试。

测试内容 确认要点
小于上限的文件(如设为 64MB 则用 63MB)应能正常上传
恰好等于上限的文件(如 64MB)确认上传成功与否
超过上限的文件(如 65MB)应显示恰当的错误提示

疑难排查

  • 设置未生效:可能需要重启 Web 服务器(Apache/Nginx)与 PHP 进程。
  • 出现 500 错误:请检查 .htaccess 是否有笔误或服务器不支持的指令。
  • 出现 413 错误:若使用 Nginx,请一并检查 client_max_body_size(在 nginx.conf 中设置)。
  • 超时:大文件上传还需调高 max_execution_timemax_input_time

❓ 常见问题

改了配置但上限没有变化。
只要有任何一处仍是较小的值,那里就是实际上限。检查顺序为:php.ini 的 upload_max_filesize 与 post_max_size,Web 服务器的 client_max_body_size 或 LimitRequestBody,以及主机商控制面板中的上限。共享主机上,php.ini 的修改本身有时被配置为忽略。
写在 functions.php 还是 wp-config.php 更好?
两者都不保证能覆盖 PHP 的 ini 设置,真正可靠的是服务器端配置。functions.php 在换主题后会丢失,因此至少与主题无关的 wp-config.php 更安全。但本质上这应当在 php.ini、.htaccess 或主机控制面板中修改,WordPress 侧的写法请视为最后手段。
上传大体积视频的最佳方式是什么?
与其提高上限,正确答案是根本不要把视频放进 WordPress。数百 MB 的文件会挤压 PHP 的内存与执行时间,也让备份变重。放到 YouTube、Vimeo 或 S3 之类的对象存储再嵌入,既彻底消除上限问题,分发也更快。若确实必须自行托管,请用 FTP 或 SSH 直接放置,媒体库中仅做登记。