php限制上传大小
越来越多的童鞋在使用PHPstudy来搭建网站, ,PHPstudy搭建php+mysql的网站还是非常不错的,主要就是可以随意切换php版本,但是不少童鞋在用php程序上传文件时候,默认限制的只能上传2M大小的文件,在这里说下如何修改这个上传限制大小。
总共修改三个地方
post_max_size
max_execution_time
max_input_time
下图所示
打开修改这三个里面的值,不知道修改成多少的,直接在原有数字后面加个0即可,一般够用了
2. 如何通过配置php文件限制上传文件的大小
在网站开发的过程中,为了确保能够充分利用服务器的空间,在开发上传功能时,必须对上传文件的大小进行控制。那么我们如何进行对上传文件的大小进行控制呢?
控制文件的大小可以从两个方面入手:
第一个是在PHP的配置文件php.ini中对上传文件进行控制,如果上传文件超过它指定的范围,那么执行上传就会识别。
第二个是在PHP配置文件允许的范围内,在程序中对上传文件的大小进行控制!
一:通过配置文件控制上传文件
PHP中通过php.ini文件对上传文件进行控制,包括是否支持上传,上传文件的临时文件目录,上传文件的大小,指令执行时间,指令分配的内存空间。
在php.ini中,定义 File Uploads项,完成对上传相关选项的设置。上传相关选项的含义如下:
file_uploads:如果值是 no,说明服务器支持上传文件,如果为off ,那么则不支持。一般默认是支持的,这个不用修改!
upload_tmp_dri:上传文件临时目录。文件被成功上传之前,文件首先存放到服务器端的临时目录中。多数使用系统默认目录,但是也可以自行设置!
upload_max_filesize:服务器允许上传文件的最大值,以MB为单位,系统默认为2MB,如果网站需要上传超过2MB的数据,那么就要修改这个值!
上述是php.ini中 File_Uploads项中与上述相关参数设置说明,除了File_Uploads项中的内容外,在php.ini中还有其他几个选项会影响到文件的上传~
max_execution_time:PHP中一个指令所能执行的最大时间,单位为秒。该选项在上传超大文件时必须要修改,否则即使上传文件在服务器允许的范围内,但是若超过了指令所能执行的最大时间,仍然无法实现上传~
memory_limit:PHP中一个指令所分配的内存空间,单位是 MB 。它的大小同样会影响得到超大文件的上传!
二:在程序中控制上传文件
在客户端控制上传文件应用的是 form 表单中的 enctype 和 method属性以及隐藏域 MAX_FILE_SIZE。
enctype = “multipart/form-data”:指定表单编码数据方式。
method = “post”:指定数据的传输方式。
<input type = "hidden" name="MAX_FILE_SIZE" value=“10000”/>:通过隐藏域控制上传文件的大小(单位为字节),该值不能超过php.ini配置文件中 upload_max_filesize 选项设置的值,它不能喝完全控制上传文件的大小。只是可以避免一些不必要的麻烦。
技巧:
在应用隐藏域<input type = "hidden" name="MAX_FILE_SIZE" value=“10000”/>控制文件上传大小时,必须将其放置在文件域之前,否则是不能发挥作用的!
3. 如何突破php上传文件大小限制
1. 一般的php文件上传,除非文件很小.就像一个5M的文件,很可能要超过一分钟才能上传完.
但在php中,默认的该页最久执行时间为 30 秒.就是说超过30秒,该脚本就停止执行.
这就导致出现 无法打开网页的情况.这时我们可以修改 max_execution_time
在php.ini里查找
Java代码
max_execution_time
默认是30秒.改为
max_execution_time = 0
0表示没有限制
以上修改的是php上传文件中脚本执行超时时间
2. 修改 post_max_size 设定 POST 数据所允许的最大大小。此设定也影响到php上传文件。
php默认的post_max_size 为2M.如果 POST 数据尺寸大于 post_max_size $_POST 和 $_FILES superglobals 便会为空.
查找 post_max_size .改为
3. 修改了第二步,但php上传文件时最大仍然为 8M。
为什么呢.我们还要改一个参数upload_max_filesize 表示所上传的文件的最大大小。
查找upload_max_filesize,默认为8M改为
Java代码
post_max_size=150M
Java代码
upload_max_filesize=100M
4. php上传问题 在上传不成功的情况下,当上传文件大于10M(大概数)时就会报错,而不是根据程序提示,
你说的10M应该是php.ini里设置的上传文件大小限制,而你这个switch判断是基于表单上传文件大小来判断的,两者毫无相关!
一、超过10M,在php底层处理请求时就直接报错了,根本执行不到你switch的地方,所以报错是非预期的
二、超过2M,php能正常执行,所以会按照你switch来报错
这里,你要搞清楚php的上传文件大小限制跟form表单上传文件大小限制的关系