如何修改 WordPress 的上传上限
介绍提升 WordPress 媒体上传上限的 5 种方法。请根据服务器环境与所用主机服务选择最合适的方式。
确认当前的上传上限
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(日本主机商)
- 登录服务器面板
- 选择「PHP」→「php.ini 设置」
- 选择目标域名
- 打开「php.ini 设置修改」标签页
- 将
upload_max_filesize与post_max_size改为所需值 - 点击「进入确认画面」→「修改」
ConoHa WING
- 登录控制面板
- 「站点管理」→「站点设置」→「高级设置」
- 在「PHP 设置」中修改
upload_max_filesize
SAKURA Internet
- 登录控制面板
- 「脚本设置」→「php.ini 设置」
- 修改配置值并保存
修改后的测试
修改配置后,请实际上传一个大文件确认效果。使用 DevLab 的阈值测试文件,可对所设上限进行精确的边界值测试。
| 测试内容 | 确认要点 |
|---|---|
| 小于上限的文件(如设为 64MB 则用 63MB) | 应能正常上传 |
| 恰好等于上限的文件(如 64MB) | 确认上传成功与否 |
| 超过上限的文件(如 65MB) | 应显示恰当的错误提示 |
疑难排查
- 设置未生效:可能需要重启 Web 服务器(Apache/Nginx)与 PHP 进程。
- 出现 500 错误:请检查
.htaccess是否有笔误或服务器不支持的指令。 - 出现 413 错误:若使用 Nginx,请一并检查
client_max_body_size(在nginx.conf中设置)。 - 超时:大文件上传还需调高
max_execution_time与max_input_time。