发布于2026-07-08 阅读(0)
扫一扫,手机访问
你是不是也遇到过上传大文件时被无情拒绝的尴尬?系统提示文件超出大小限制,多半是PHP配置里的上传限制没调对。别急,这事儿其实不复杂,按下面的步骤来,基本都能搞定。

先说结论:解决PHP文件上传超限,核心就五步——第一步改php.ini里的三个参数;第二步如果用的是Apache,可以用.htaccess局部覆盖;第三步实在不行就在代码里用ini_set临时调;第四步别忘了Nginx那边也有个client_max_body_size要配;第五步,在PHP代码层面再做个校验,双重保险。下面一个一个说。
这是最直接、最彻底的办法——直接改PHP的全局配置,适用于你有服务器管理权限的场景。找到php.ini的位置,Linux Apache下通常在/etc/php/8.1/apache2/php.ini,Windows phpStudy下在C:\phpStudy\php\php-8.1\php.ini。进去之后需要盯紧三个参数,它们必须协同工作:
upload_max_filesize = 64M。post_max_size = 72M。memory_limit = 256M。改完之后保存,别忘了重启Web服务器(Apache或Nginx),配置才会生效。
如果你无法直接编辑php.ini,但服务器给.htaccess的写入权限,那可以用这个办法——对特定目录下的PHP脚本单独设限。在网站根目录或目标上传目录下创建或编辑.htaccess文件,写入两行:
php_value upload_max_filesize 64M
php_value post_max_size 72M
注意:这只对Apache + mod_php模式有效,PHP-FPM是不认的。保存后无需重启,规则立即生效。
这个方法更适合多租户或动态策略的场景——在PHP脚本执行初期用ini_set函数临时修改配置,仅对当前请求生命周期有效。在文件上传逻辑的PHP文件开头加上:
ini_set('upload_max_filesize', '64M');
ini_set('post_max_size', '72M');
需要留个心眼:如果服务器开启了safe_mode,或者用的是CGI模式,这个函数可能被禁用。另外它不能超过php.ini里设定的硬性上限,所以如果原php.ini里上限只有2M,你这里设64M也没用。
如果你的Web服务器是Nginx,那它自己也有个限制——client_max_body_size,默认可能只有1M。如果不调这个,PHP那边改得再大,请求在Nginx层就被拦截了。打开Nginx配置文件(通常是nginx.conf或站点配置文件),在server块或location块里加上:
client_max_body_size 64M;
保存后执行sudo nginx -s reload重载配置即可。
即使前面所有配置都调好了,也建议在接收文件前再做一个显式的大小判断——一来可以防止配置意外绕过,二来能给用户更友好的错误提示。检查$_FILES['file']['size'],单位是字节。比如:
if ($_FILES['file']['size'] > 67108864) {
die('文件超出64MB限制');
}
同时别忘了验证$_FILES['file']['error'] === UPLOAD_ERR_OK,排除上传中断等异常情况。这样里外都封死,上传限制的问题才算真正解决。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8