WordPress上传文件大小限制:完整解决方案指南

本文针对WordPress上传文件时遇到的“文件尺寸超过php.ini限制”错误,提供了从原因分析到解决方案的完整指南。文章指出错误源于PHP配置限制,并详细解析了upload_max_filesize等关键参数。解决方案根据用户权限级别分为三类:通过.htaccess文件修改(适用于共享主机)、直接修改php.ini文件(适用于VPS/云服务器)以及在wp-config.php中设置(作为备选)。文中给出了具体的操作步骤和2026年的参数建议值。

文章作者:曾凤祥
阅读时间: 43 分钟
更新时间:2026年3月19日

“上传的文件尺寸超过php.ini中定义的upload_max_filesize值”是WordPress用户最常见的错误之一。本文将提供从基础到高级的完整解决方案,涵盖2026年主流服务器环境。

一、错误原因深度解析

触发条件

  • 上传文件大小超过PHP配置限制
  • WordPress默认限制通常为2MB
  • 影响:图片、视频、主题、插件、备份文件等上传

涉及的三个关键参数

upload_max_filesize    = 单个文件最大尺寸
post_max_size          = POST请求最大数据量
memory_limit           = PHP内存限制
max_execution_time     = 执行时间限制

常见默认值

共享主机:2-10MB
VPS主机:2-8MB
云服务器:通常8MB
WordPress专用主机:64-256MB

二、快速自检步骤

第一步:确认当前限制

  1. 安装插件:WP Server HealthServer IP & Memory Usage
  2. 查看当前值: upload_max_filesize: 2M post_max_size: 8M memory_limit: 256M max_execution_time: 30

第二步:计算需求

图片需求:单张照片 3-5MB
视频需求:短视频 10-50MB
主题/插件:5-20MB
备份文件:50MB+
建议设置:至少 64MB

三、解决方案全集(按权限级别)

方案A:通过.htaccess修改(共享主机常用)

适用环境

  • Apache服务器
  • 允许.htaccess覆盖
  • 无服务器管理权限

操作步骤

# 在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

# 如果上面无效,尝试
<IfModule mod_php.c>
  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
</IfModule>

# 对于cPanel主机,可能还需要
<IfModule mod_suphp.c>
  suPHP_ConfigPath /home/username/public_html
  php_value upload_max_filesize 64M
  php_value post_max_size 128M
</IfModule>

注意事项

  • 备份原.htaccess文件
  • 位置:/public_html/.htaccess
  • 修改后清空浏览器缓存
  • 某些主机禁用此方法

方案B:通过php.ini修改(VPS/云服务器)

适用环境

  • 有服务器SSH权限
  • 可创建/修改php.ini
  • 独立服务器/VPS

操作步骤

方法1:创建php.ini文件

; 在WordPress根目录创建php.ini
upload_max_filesize = 64M
post_max_size = 128M
memory_limit = 256M
max_execution_time = 300
max_input_time = 300

; 2026年建议值
upload_max_filesize = 128M
post_max_size = 256M
memory_limit = 512M
max_execution_time = 600
max_input_time = 600

方法2:修改服务器php.ini

# SSH登录服务器
sudo nano /etc/php/8.2/apache2/php.ini
# 或
sudo nano /usr/local/php82/etc/php.ini

# 找到并修改以下行
upload_max_filesize = 64M
post_max_size = 128M
memory_limit = 256M
max_execution_time = 300

# 保存后重启Web服务
# Apache
sudo systemctl restart apache2
# Nginx + PHP-FPM
sudo systemctl restart php8.2-fpm
sudo systemctl restart nginx

文件位置参考

Apache: /etc/php/8.2/apache2/php.ini
Nginx: /etc/php/8.2/fpm/php.ini
cPanel: /usr/local/lib/php.ini

方案C:通过wp-config.php修改(部分有效)

适用环境

  • 主机允许ini_set
  • 作为临时解决方案

操作步骤

// 在wp-config.php的<?php后添加
@ini_set('upload_max_size', '64M');
@ini_set('post_max_size', '128M');
@ini_set('memory_limit', '256M');
@ini_set('max_execution_time', '300');

// WordPress 6.5+ 也可以使用
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');

局限性

  • 并非所有主机都支持
  • 可能被主机策略覆盖
  • 通常只能调整memory_limit

方案D:通过控制面板修改(cPanel/Plesk)

cPanel操作

  1. 登录cPanel
  2. 找到”PHP版本”或”选择PHP版本”
  3. 切换到”选项”标签
  4. 修改以下值: upload_max_filesize → 64M post_max_size → 128M memory_limit → 256M max_execution_time → 300
  5. 保存并清除缓存

Plesk操作

  1. 域名 → PHP设置
  2. 调整相应参数
  3. 保存并重启服务

DirectAdmin操作

  1. 自定义编译 → PHP配置
  2. 修改php.ini
  3. 重启Apache

方案E:通过functions.php修改(临时方案)

// 在主题functions.php中添加
function increase_upload_limit($file) {
    if( current_user_can('upload_files') ) {
        add_filter('upload_size_limit', function() {
            return 64 * 1024 * 1024; // 64MB
        });
    }
    return $file;
}
add_filter('wp_handle_upload_prefilter', 'increase_upload_limit');

四、按服务器类型详细配置

1. Apache服务器(最常见)

# .htaccess最佳配置
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
</IfModule>

<IfModule mod_php.c>
php_value upload_max_filesize 128M
php_value post_max_size 256M
php_value memory_limit 512M
php_value max_execution_time 600
php_value max_input_time 600
php_value max_input_vars 3000
</IfModule>

# 如果使用FastCGI
<IfModule mod_fcgid.c>
FcgidMaxRequestLen 26214400
</IfModule>

2. Nginx服务器

# 在nginx配置文件中
server {
    # ... 其他配置 ...
    
    client_max_body_size 128M;
    
    location ~ \.php$ {
        fastcgi_param PHP_VALUE "
            upload_max_filesize = 128M
            post_max_size = 256M
            memory_limit = 512M
            max_execution_time = 600
        ";
    }
}

3. LiteSpeed服务器

# .htaccess配置
<IfModule Litespeed>
php_value upload_max_filesize 128M
php_value post_max_size 256M
php_value memory_limit 512M
php_value max_execution_time 600
</IfModule>

五、WordPress媒体库专项优化

1. 修改媒体设置

WordPress后台 → 设置 → 媒体
建议设置:
缩略图大小:150×150
中等大小:300×300
大尺寸:1024×1024

2. 通过插件自动优化

推荐插件(2026年最新)

  • Imagify​ – 自动压缩图片
  • EWWW Image Optimizer​ – 批量优化
  • ShortPixel​ – 智能压缩
  • Smush​ – 延迟加载+压缩

3. 禁用自动生成图片尺寸

// functions.php中添加
function disable_image_sizes($sizes) {
    unset($sizes['medium_large']); // 768px
    unset($sizes['1536x1536']);    // 2x中等大图
    unset($sizes['2048x2048']);    // 2x大图
    return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'disable_image_sizes');

六、分步排查流程

第一步:确认当前限制

<?php
// 创建info.php文件
phpinfo();
?>

访问:你的域名/info.php

查看:upload_max_filesizepost_max_size

第二步:修改配置

  1. 按权限选择方案A-E
  2. 注意:post_max_size必须大于 upload_max_filesize
  3. 建议比例:post_max_size = upload_max_filesize × 2

第三步:重启验证

Apache: sudo systemctl restart apache2
Nginx: sudo systemctl restart nginx && sudo systemctl restart php-fpm
PHP-FPM: sudo systemctl restart php8.2-fpm

第四步:测试上传

  • 使用1MB测试文件
  • 逐步增加大小
  • 监控错误日志

七、特殊场景解决方案

场景1:主机禁用.htaccess修改

解决方案:
1. 联系主机商请求调整
2. 使用主机控制面板修改
3. 考虑升级主机方案
4. 迁移到可控制的主机

场景2:多站点WordPress

特别注意:
1. 每个站点可能有独立限制
2. 网络管理员设置优先
3. 修改网络级别的wp-config.php

场景3:超大文件上传(>256MB)

进阶方案:
1. 通过FTP上传到wp-content/uploads
2. 使用媒体库导入插件
3. 分卷压缩上传
4. 使用对象存储(S3等)

场景4:主题/插件上传失败

专门方案:
1. 通过FTP上传
2. 通过主机文件管理器上传
3. 在线解压
4. 使用SSH命令安装

八、2026年最佳实践推荐

推荐配置值

; 个人博客
upload_max_filesize = 64M
post_max_size = 128M
memory_limit = 256M

; 图片/视频网站
upload_max_filesize = 256M
post_max_size = 512M
memory_limit = 512M

; 电商/会员站点
upload_max_filesize = 128M
post_max_size = 256M
memory_limit = 1024M

安全注意事项

  1. 不要设置过大:避免服务器被大文件攻击
  2. 限制文件类型:只允许必要格式
  3. 定期检查日志:监控异常上传
  4. 使用CDN:减轻服务器负担
  5. 启用防火墙:防止恶意上传

九、自动优化脚本

#!/bin/bash
# WordPress上传限制一键优化脚本
# 保存为fix_upload.sh,chmod +x后执行

echo "检测当前PHP配置..."
php -i | grep -E "upload_max_filesize|post_max_size|memory_limit"

echo "备份原始php.ini..."
sudo cp /etc/php/8.2/fpm/php.ini /etc/php/8.2/fpm/php.ini.backup_$(date +%Y%m%d)

echo "修改php.ini配置..."
sudo sed -i 's/^upload_max_filesize =.*/upload_max_filesize = 128M/g' /etc/php/8.2/fpm/php.ini
sudo sed -i 's/^post_max_size =.*/post_max_size = 256M/g' /etc/php/8.2/fpm/php.ini
sudo sed -i 's/^memory_limit =.*/memory_limit = 512M/g' /etc/php/8.2/fpm/php.ini
sudo sed -i 's/^max_execution_time =.*/max_execution_time = 300/g' /etc/php/8.2/fpm/php.ini

echo "重启PHP-FPM..."
sudo systemctl restart php8.2-fpm

echo "创建.htaccess备份..."
cp .htaccess .htaccess.backup_$(date +%Y%m%d)

echo "更新.htaccess..."
cat > .htaccess << 'EOF'
<IfModule mod_php.c>
php_value upload_max_filesize 128M
php_value post_max_size 256M
php_value memory_limit 512M
php_value max_execution_time 300
</IfModule>

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
EOF

echo "配置完成!"

十、常见问题与解决方案

Q1:修改后无效?

原因1:修改位置错误
解决:确认php.ini位置
    php --ini | grep "Loaded Configuration File"

原因2:需要重启服务
解决:重启Web服务和PHP

原因3:主机限制
解决:联系主机商

Q2:修改成功但上传仍失败?

检查顺序:
1. 文件是否损坏
2. 文件夹权限是否正确
3. 磁盘空间是否足够
4. WordPress媒体库设置

Q3:如何设置不同文件类型不同限制?

通过.htaccess实现:
<FilesMatch "\.(jpg|jpeg|png|gif)$">
    php_value upload_max_filesize 20M
</FilesMatch>
<FilesMatch "\.(mp4|mov|avi)$">
    php_value upload_max_filesize 100M
</FilesMatch>

十一、长期维护建议

  1. 定期检查:每季度检查一次限制是否足够
  2. 监控日志:关注上传错误日志
  3. 备份配置:修改前备份原始配置
  4. 测试流程:每次修改后进行上传测试
  5. 文档记录:记录修改内容和时间

十二、终极方案:绕过限制

如果所有方法都无效,考虑:

1. FTP上传

  • 使用FileZilla等FTP工具
  • 上传到wp-content/uploads
  • 在媒体库中识别

2. 外部存储

  • 阿里云OSS
  • 腾讯云COS
  • 七牛云存储
  • 通过插件集成

3. 分块上传插件

  • Chunked File Uploader
  • 自动分割大文件
  • 断点续传支持

总结

解决WordPress上传文件大小限制需要系统的方法。2026年的最佳实践是:

  1. 先诊断:确认当前限制和服务器环境
  2. 选方案:根据权限选择对应方法
  3. 调参数:按实际需求设置合理值
  4. 做测试:验证修改是否生效
  5. 备方案:准备替代上传方案

记住:post_max_size必须至少是upload_max_filesize的两倍,这是最常见的配置错误。

最终检查清单

  • [ ] 修改了正确的php.ini文件
  • [ ] post_max_size ≥ 2 × upload_max_filesize
  • [ ] 重启了Web服务
  • [ ] 清除了浏览器缓存
  • [ ] 测试了不同大小的文件

通过以上步骤,99%的上传大小限制问题都能得到解决。如果仍然遇到问题,建议联系专业的主机技术支持或开发者协助处理。

这篇文章有用吗?

点击星号为它评分!

平均评分 5 / 5. 投票数: 1

到目前为止还没有投票!成为第一位评论此文章。

在AI工具中继续讨论:

曾凤祥

曾凤祥

WordPress技术负责人
小兽WordPress凭借15年的WordPress企业网站开发经验,坚持以“为企业而生的WordPress服务”为宗旨,累计为10万多家客户提供高品质WordPress建站服务,得到了客户的一致好评。我们一直用心对待每一个客户,我们坚信:“善待客户,将会成为终身客户”。小兽WordPress能坚持多年,是因为我们一直诚信。

相关文章

如何让线上业务更上一层楼

还没有WordPress网站

还没有WordPress网站

不管你从事什么行业,WordPress都会为你提供一个专业的主题模板。在WordPress市场上有成千上万的免费主题,适合很多中小企业。

查看所有模板
已经有WordPress网站

已经有WordPress网站

小兽WordPress诚邀你一起学习WordPress,愿与各方携手升级改善您的WordPress网站,一起交流网站加速,网站优化等问题。

马上交个朋友
微信联系
chat 扫码联系
模板建站
挑选模板
网站定制
免费诊断
咨询热线
咨询热线

189-0733-7671

返回顶部