本文共 2322 字,大约阅读时间需要 7 分钟。
今天整理一下PHP中与上传相关的配置,尤其是解决默认上传限制的问题:
在php目录中找到php.ini,用编辑器打开,
与上传大小相关的参数
post_max_size 提交数据最大值
设置允许的提交数据的最大大小,此设置会影响文件上传。 要上传大文件,此值必须大于upload_max_filesize。 一般而言,memory_limit应该大于post_max_size。 如果post的数据大于post_max_size,则$ _POST和$ _FILES全局变量为空。此参数建议要设置比upload_max_filesize大一些。upload_max_filesize 上传文件最大值
允许上传文件的最大值,默认为2M,设置为自己需要的值。此参数建议不要超过post_max_size值(就算upload_max_filesize设置了1G,而post_max_size只设置了2M时,大于2M的文件照样传不上去,因为它受制于post_max_size值)memory_limit 设置内存限制
允许脚本分配的最大内存量(以字节为单位)。防止编写不良脚本耗尽服务器上可用内存。 若没有内存限制,将此伪指令设置为-1。一般而言,memory_limit应该大于post_max_size。post_max_size = 20Mupload_max_filesize = 20Mmemory_limit = 128M
与上传时间相关的参数
max_execution_time = 60max_input_time = 600
其它参数
file_uploads 是否允许上传
是否允许上传HTTP文件,布尔值,默认为1.upload_tmp_dir 上传临时目录
上传文件时用于存储文件的临时目录。 任何运行PHP的用户都必须可写。 如果未指定,PHP将使用系统的默认值。 如果此处指定的目录不可写,PHP将退回到系统默认的临时目录。 如果open_basedir打开,则必须允许系统默认目录才能成功上载。一般情况下,如果没报错就不用管。max_file_uploads 上传的文件数量最大值
允许同时上传的最大文件数,默认值为20即一次最多上传20个文件。 从PHP 5.3.4开始,提交时留空的上传字段不计入此限制。iis上传大文件解决办法
1、打开“Internet 信息服务(IIS)管理器”;
2、关闭IIS服务; 3、双击“Default Web Site“→双击中间窗格中的“请求筛选”→单击右侧窗格的“编辑功能设置”→修改“请求限制”下面的“允许的最大内容长度”,默认是30M,根据需求修改后,点击“确定”; 4、重新启动IIS。 如果还是不行,那就需要修改fastcgi的配置等,具体内容参考:
apache2上传大文件解决办法
/etc/httpd/conf.d/php.conf 中的LimitRequestBody 524288将524288(=512×1024)改大,比如5M(=5×1024×1024)
使用Apache Rewrite方法,动态修改memory_limit的值。首先建立一个.htaccess文件,保存在上传文件程序的 当前目录即可.代码如下: php_value memory_limit 100M php_value post_max_size 30M php_value upload_max_filesize 30M php_value max_execution_time 300 php_value max_input_tim 300 php_value display_errors On
nginx上传大文件解决办法
1.client_body_buffer_size 尽量设置的大点,这是基于速度的考虑,如果因为设置的过小,导致上传的文件老要写磁盘,那速度就太慢了。
2.client_body_temp_path 路径要有可写权限,这个是明显的错误了。改正了就好 3.client_max_body_size 设置上传文件的最大值,这个是基于安全的考虑,我们认为正常用户不会或者基本不会上传太大的文件。 可以设置为client_max_body_size 100m; 或者按照自己的业务来设置这个值。
参考连接
转载地址:http://yvkpi.baihongyu.com/