PHP 上传大小限制怎么改

平时做网站上传功能时,是不是总遇到“文件太大传不上去”的尴尬?比如想传个10MB的简历却提示“文件超出限制”,这大概率是PHP的上传大小设置没调好。别担心,这个设置其实改起来很简单,今天就用日常能懂的例子,一步步教你调整。

先搞懂3个关键参数:别乱改,改错会出问题

PHP的上传限制不是单一的数值,而是3个相互关联的参数,就像接水管要同时看“水龙头流量”“水管粗细”“水桶容量”,缺一个都不行。

PHP 上传大小限制怎么改

第一个是upload_max_filesize,这是单文件能上传的最大体积,相当于你家水桶的容量。比如想传10MB的文件,这里就得设成比10MB大的数,比如12MB,留一点余量更稳妥。

第二个是post_max_size,这是一次表单提交的总大小,相当于你拿水桶接水,一次最多能提多少水。如果传1个10MB的文件,那这个数至少要比10MB大;如果要一次传5个2MB的文件,总大小就是10MB,也得把这个数设成至少10MB。

第三个是max_execution_time,这是PHP脚本的最长运行时间,相当于你接水能花多久,要是传大文件时脚本还没跑完就超时了,同样会失败。

种常见改法:从简单到进阶,按需选

改参数的方法有3种,从最简单到需要接触代码,根据你的情况选就行。

第一种是改服务器配置文件,最适合普通用户。先找到你的PHP配置文件php.ini——不同系统位置不一样,比如Windows可能在C:\php\php.ini,Linux在/etc/php/8.x/apache2/php.ini(x是你的PHP版本)。打开后找到刚才说的三个参数:把upload_max_filesize改成你要的大小(比如12M,注意单位是M别写错),post_max_size改成15M,max_execution_time改成300(单位是秒,5分钟足够传大文件)。改完后得重启服务器,比如宝塔面板的话点“重启服务”,Nginx的话重启Nginx就行。

第二种是在网站根目录加小文件,适合用虚拟主机的用户,不用动服务器配置。如果是Apache服务器,在根目录建个.htaccess文件,内容写php_value upload_max_filesize 12M、php_value post_max_size 15M、php_value max_execution_time 300;如果是Nginx,就编辑网站的Nginx配置,在server块里加这三行。

第三种是临时改,适合只需要暂时调整的情况,比如自己测试用。在你的上传页面的PHP代码开头加三行:ini_set('upload_max_filesize', '12M');、ini_set('post_max_size', '15M');、ini_set('max_execution_time', '300');,这样只对这个页面生效,不影响其他功能。

改完后别忘测试:避免白忙活

改完一定要测,不然可能哪里漏了设置。找个比你改后限制小一点的文件传试试,比如设成12M,就传个10MB的文件,能传成功就没问题;要是还不行,就检查下是不是重启服务器了,或者有没有写错参数单位(比如写成12而不是12M)。

总之,PHP上传大小限制的调整,本质就是把三个关联的参数调到匹配你需要的文件大小,不用怕复杂,跟着步骤做,基本都能解决问题。

上一篇 Java String 和 StringBuilder 区别