WordPress 默认上传大小通常只有 2MB,上传稍大的图片或视频就会提示「上传的文件尺寸超过允许的最大值」。这个限制不是 WordPress 单独决定的,而是由服务器 PHP 配置和 WordPress 自身共同决定的,需要按顺序排查和修改。
一、先弄清是谁在限制你
WordPress 的有效上传上限 = PHP 的 upload_max_filesize、post_max_size 与 WordPress 侧上限三者中的最小值。
| 限制项 | 作用 | 说明 |
|---|---|---|
upload_max_filesize | PHP 单个文件上限 | 最关键,通常默认 2M |
post_max_size | 整个 POST 请求体上限 | 必须 ≥ upload_max_filesize,建议略大 |
max_execution_time / max_input_time | 脚本执行/输入时间 | 大文件慢速上传需要调大 |
memory_limit | 内存上限 | 影响图片缩略图生成,大图需调大 |
WordPress upload_size_limit | WP 侧媒体库上限 | 默认取上面两个 PHP 值的最小值 |
判断当前实际限制:后台 媒体 → 添加 页面底部会显示「最大上传文件大小:XX MB」。这个数字就是三者取最小值后的结果。
二、五种修改方案
方案一:修改 php.ini(最可靠,推荐)
找到服务器的 php.ini(宝塔面板在「软件商店 → PHP → 设置 → 配置修改」,cPanel 在「MultiPHP INI Editor」),修改或添加:ini
upload_max_filesize = 64M
post_max_size = 68M
max_execution_time = 300
max_input_time = 300
memory_limit = 256M
改完重启 PHP / Web 服务后生效。要点:post_max_size 要略大于 upload_max_filesize,例如传 64M 就设 68M。
方案二:修改 .htaccess(Apache 且支持 php_value 时)
在站点根目录 .htaccess 中添加:apache
php_value upload_max_filesize 64M
php_value post_max_size 68M
php_value max_execution_time 300
⚠️ 仅适用于 Apache + mod_php。若服务器是 Nginx 或 PHP-FPM,添加后网站会直接报 500 错误,请立即删除。
方案三:修改 .user.ini(FastCGI / PHP-FPM,虚拟主机常用)
如果 php.ini 无法修改(常见于虚拟主机),在站点根目录新建或编辑 .user.ini:ini
upload_max_filesize = 64M
post_max_size = 68M
max_execution_time = 300
保存后重启 PHP 服务,.user.ini 会递归作用于该目录。
方案四:修改 wp-config.php(部分主机有效)
在站点根目录 wp-config.php 中,require_once ABSPATH . 'wp-settings.php'; 之前添加:php
@ini_set('upload_max_filesize', '64M');
@ini_set('post_max_size', '68M');
@ini_set('max_execution_time', '300');
仅当主机允许
ini_set修改这些 PHP_INI_PERDIR 级别配置时才有效,很多共享主机对此做了限制,无效时请改用方案一或三。
方案五:WordPress 侧过滤 upload_size_limit(提升 WP 自身上限)
在主题 functions.php(或子主题的 functions.php)中添加:php
add_filter('upload_size_limit', function () {
return 64 * 1024 * 1024; // 64MB,单位:字节
});
注意:这个方法只能提高 WordPress 展示与拦截的上限,无法突破服务器的 PHP 限制。如果 PHP 仍为 2M,上传照样失败。正确做法是先改 PHP,再用此过滤器统一 WordPress 侧上限。
三、方案选择建议
| 环境 | 推荐方案 |
|---|---|
| 宝塔面板 | 方案一(PHP 配置修改) |
| cPanel / DirectAdmin 虚拟主机 | 方案一(MultiPHP INI Editor)或方案三(.user.ini) |
| Apache + mod_php | 方案一或方案二 |
| Nginx + PHP-FPM | 方案一或方案三(.user.ini),勿用 .htaccess |
| 无法改动服务器配置 | 联系主机商,并配合方案五 |
四、修改后如何验证
- 回到后台 媒体 → 添加,查看底部的「最大上传文件大小」是否已变为目标值;
- 直接上传一个大文件实测;
- 若数字未变,说明当前目录生效的
php.ini或.user.ini不是这个站点对应的,需确认路径与 PHP 版本。
发表评论