网站上传文件限制修改,图片附件上传配置
网站提示“上传文件过大”或图片附件传不上去,多半是 PHP、Web 服务器或程序自身三层限制中的某一层没放开。
本文按零基础可照做的顺序,讲清网站上传文件限制修改和图片附件上传配置,覆盖 php.ini、Nginx、宝塔面板和 WordPress 场景,最终能上传几十 MB 的图片或附件并验证生效。
先判断限制出在哪一层
上传失败时不要急着改参数,先看报错来源。
常见提示有 The uploaded file exceeds the upload_max_filesize directive in php.ini、413 Request Entity Too Large,或程序提示“文件大小超出限制”。
- PHP 层报错:通常提到
upload_max_filesize、post_max_size,说明 PHP 限制太小。 - Nginx 层报错:出现
413,说明请求体超过client_max_body_size。 - 程序层限制:WordPress 等程序在后台有独立设置,或主题、插件限制附件大小。
判断结论:看到 413 先改 Nginx,看到 php.ini 提示先改 PHP,两者都正常但程序仍拦截,再查程序或插件设置。
修改 PHP 上传限制
PHP 的上传限制由几个参数共同决定,只改一个往往不生效。
需要同时调整以下值,建议按需放大,不要无限调高。
; php.ini
file_uploads = On
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
max_input_time = 300
memory_limit = 256M
upload_max_filesize:单个上传文件的最大值。post_max_size:整个 POST 请求体上限,必须大于等于上传文件大小,否则大文件仍会失败。max_execution_time和max_input_time:大文件上传耗时长,适当放大避免超时。memory_limit:处理图片时内存不足会导致失败,建议不低于 256M。
修改后重启 PHP-FPM 或 Web 服务。
宝塔面板路径:软件商店 → PHP 对应版本 → 设置 → 配置修改,改完保存并重载。
命令行环境可执行:
systemctl restart php-fpm
# 或
systemctl restart nginx
调整 Nginx 请求体大小
如果 PHP 已放开仍报 413,需要改 Nginx。
在 http、server 或 location 块中加入:
client_max_body_size 64M;
宝塔面板路径:网站 → 对应站点 → 设置 → 配置文件,在 server 段内添加后保存,Nginx 会自动重载。
命令行环境执行 nginx -t 检查语法,再 nginx -s reload。
Nginx 的 client_max_body_size 要大于等于 PHP 的 post_max_size,否则请求在到达 PHP 之前就被拒绝。
图片附件上传的程序侧配置
以 WordPress 为例,媒体库上传大小受 PHP 和程序共同影响。
若主机支持,可在 wp-config.php 中增加:
define('WP_MEMORY_LIMIT', '256M');
部分主题或安全插件会单独限制附件类型和大小,需要到插件设置中检查上传白名单。
如果使用的是其他 CMS,查找后台的“附件设置”“上传设置”类似入口,确认允许的扩展名和大小。
图片附件上传配置还要注意目录权限。
上传目录通常需要 Web 用户可写,例如 www 或 nginx 用户。
权限异常时,即使大小没超也会上传失败。
避坑与验证
改完参数不代表立即生效,常见坑有:
- 只改了
upload_max_filesize,没改post_max_size,大文件依旧失败。 - 宝塔中改了 PHP 配置但没点重载,配置未加载。
- Nginx 配置写在错误层级,被其他
server块覆盖。 - 浏览器缓存或 CDN 层还有请求体限制,需要同步检查。
验证方法:创建一个接近上限大小的测试文件,通过网站后台上传。
成功即说明配置生效。
若仍失败,查看 PHP 错误日志和 Nginx 错误日志定位具体报错。
最终判断:PHP、Nginx、程序三层限制都放开且目录权限正常,上传大图片和附件才能稳定成功。 建议按实际业务需求设置合理上限,避免过大文件拖慢服务器。