PHP设置图片文件上传大小的具体实现方法


Posted in PHP onOctober 11, 2013

我们简要介绍一下PHP文件上传涉及到的一些参数:

•file_uploads :是否允许通过HTTP上传文件的开关,默认为ON即是开。
•upload_tmp_dir :upload_tmp_dir用来说明PHP上传的文件放置的临时目录,要想上传文件,得保证服务器没有关闭临时文件和有对文件夹的写权限,如果未指定则PHP使用系统默认值。
•upload_max_filesize :允许上传文件大小的最大值,默认为2M。
•post_max_size :控制在采用POST方法进行一次表单提交中PHP所能够接收的最大数据量。如果希望使用PHP文件上传功能,则需要将此值改为比upload_max_filesize要大。
•max_input_time :以秒为单位对通过POST、GET以及PUT方式接收数据时间进行限制。如果应用程序所运行环境处在低速链路上,则需要增加此值以适应接收数据所需的更多时间。
•memory_limit :为了避免正在运行的脚本大量使用系统可用内存,PHP允许定义内存使用限额。通过memory_limit变量来指定单个脚本程序可以使用的最大内存容量变量memory_limit的值应当适当大于post_max_size的值。
•max_execution_time :max_execution_time设置了在强制终止脚本前PHP等待脚本执行完毕的时间,此时间以秒计算。当脚本进入了一个无限循环状态时此变量非常有用。然而,当存在一个需要很长时间完成的合法活动时(例如上传大型文件),这项功能也会导致操作失败。在这样的情况下必须考虑将此变量值增加,以避免PHP在脚本正在执行某些重要过程的时候将脚本关闭。
对于linux主机,可能在/etc/httpd/conf.d/access.conf/下面里面还有php.conf 文件,这个文件可能会解决一些系统的文件大小限制问题。

在PHP上传上加入下面的代码,即可暂时让PHP能上传大文件,如下:

<?php  
//HTTP上传文件的开关,默认为ON即是开  
ini_set('file_uploads','ON'); 
//通过POST、GET以及PUT方式接收数据时间进行限制为90秒 默认值:60  
ini_set('max_input_time','90'); 
//脚本执行时间就由默认的30秒变为180秒  
ini_set('max_execution_time', '180'); 
//Post变量由2M修改为8M,此值改为比upload_max_filesize要大  
ini_set('post_max_size', '12M'); 
//上传文件修改也为8M,和上面这个有点关系,大小不等的关系。 
ini_set('upload_max_filesize','10M');  
//正在运行的脚本大量使用系统可用内存,上传图片给多点,最好比post_max_size大1.5倍  
ini_set('memory_limit','20M'); 
?> 

查看上面的变量是否修改成功:

<?php  
echo ini_get('file_uploads')."\n";   
echo ini_get('max_input_time')."\n";   
echo ini_get('max_execution_time')."\n";   
echo ini_get('post_max_size')."\n";   
echo ini_get('upload_max_filesize')."\n";   
echo ini_get('memory_limit')."\n";   
?>

在php.ini中修改,涉及三个值的大小约束关系。所以是一种临时方案,这个为何不能修改,是有PHP的运行模式是有很大的关系的,如安全模式。

在安全模式下不能使用ini_set的指令:max_execution_time、memory_limit、child_terminate。

因此,像post_max_size,upload_max_filesize用下面的方法是修改不了的:

ini_set('post_max_size','10M');  
ini_set('upload_max_filesize','8M'); 

正确做法是用.htaccess文件:

php_value upload_max_filesize 8M  
php_value post_max_size 10M 

前提是该站点在httpd.conf中配置了:AllowOverride All。

在php文档里有说明upload_max_filesize的可修改范围是PHP_INI_PERDIR。PHP_INI_PERDIR的意思是域内指令可以在php.ini、httpd.conf或.htaccess文件中修改。PHP_INI_SYSTEM 域内指令可以在php.ini和httpd.conf文件中修改。所以upload_max_filesize用int_set是无法修改的。只有可修改范围是PHP_INI_ALL的才可以用int_set修改。

获取值的方法:

if(@ini_get("file_uploads")) { 
    $arrInfo['fileupload'] = "允许 - 文件 ".ini_get("upload_max_filesize")." - 表单:".ini_get("post_max_size"); 
} 
else { 
    $arrInfo['fileupload'] = "<font color='red'>禁止</font>"; 
} 
if (get_cfg_var('register_globals')){ 
    $arrInfo['onoff'] ="打开"; 
}else{ 
    $arrInfo['onoff'] = "关闭"; 
}
PHP 相关文章推荐
十天学会php之第九天
Oct 09 PHP
完美解决dedecms中的[html][/html]和[code][/code]问题
Mar 20 PHP
PHP 实现多服务器共享 SESSION 数据
Aug 15 PHP
PHP 删除一个目录及目录下的所有文件的函数代码
May 26 PHP
php URL验证正则表达式
Jul 19 PHP
PHP中的traits实现代码复用使用实例
May 13 PHP
PHP中模拟链表和链表的基本操作示例
Feb 27 PHP
微信随机生成红包金额算法php版
Jul 21 PHP
php安全配置记录和常见错误梳理(总结)
Mar 28 PHP
详解PHP防止盗链防止迅雷下载的方法
Apr 26 PHP
PHP基于Closure类创建匿名函数的方法详解
Aug 17 PHP
解决Laravel5.5下的toArray问题
Oct 15 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
Oct 10 #PHP
php检测网页是否被百度收录的函数代码
Oct 09 #PHP
php MessagePack介绍
Oct 06 #PHP
php 批量替换程序的具体实现代码
Oct 04 #PHP
php5.5中类级别的常量使用介绍
Oct 02 #PHP
php mysql_real_escape_string函数用法与实例教程
Sep 30 #PHP
PHP文件上传主要代码讲解
Sep 30 #PHP
You might like
Netflix将与CLAMP、乙一以及冲方丁等6名知名制作人合伙展开原创动画计划!
2020/03/06 日漫
解析使用substr截取UTF-8中文字符串出现乱码的问题
2013/06/20 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
2014/06/23 PHP
php实现事件监听与触发的方法
2014/11/21 PHP
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
js 纯数字不重复排列的另类方法
2010/07/17 Javascript
jquery移动listbox的值原理及代码
2013/05/03 Javascript
JavaScript初学者建议:不要去管浏览器兼容
2014/02/04 Javascript
jQuery实现点击小图显示大图代码分享
2015/08/25 Javascript
解析JavaScript中的字符串类型与字符编码支持
2016/06/24 Javascript
jQuery和JavaScript节点插入元素的方法对比
2016/11/18 Javascript
常用原生js自定义函数总结
2016/11/20 Javascript
最常见的左侧分类菜单栏jQuery实现代码
2016/11/28 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
2017/08/28 Javascript
详解iframe跨域的几种常用方法(小结)
2019/04/29 Javascript
layui layer select 选择被遮挡的解决方法
2019/09/21 Javascript
小程序实现上下移动切换位置
2019/09/23 Javascript
Python openpyxl读取单元格字体颜色过程解析
2019/09/03 Python
python飞机大战pygame游戏之敌机出场实现方法详解
2019/12/17 Python
linux 下selenium chrome使用详解
2020/04/02 Python
Django中Q查询及Q()对象 F查询及F()对象用法
2020/07/09 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
css3打造一款漂亮的卡哇伊按钮
2013/03/20 HTML / CSS
原生canvas制作画图小工具的踩坑和爬坑
2020/06/09 HTML / CSS
比驿:全球酒店比价网
2018/06/20 全球购物
迪奥美国官网:Dior美国
2019/12/07 全球购物
会话Bean的种类
2013/11/07 面试题
工商管理专业实习生自我鉴定
2013/09/29 职场文书
英语教师求职信
2014/06/16 职场文书
法制宣传标语集锦
2014/06/25 职场文书
大学生实习证明范本
2014/09/19 职场文书
2014年大学生职业规划书:未来不是梦,只要勇敢冲!
2014/09/22 职场文书
保护地球的宣传语
2015/07/13 职场文书
社区志愿者服务心得体会
2016/01/22 职场文书
CSS基础详解
2021/10/16 HTML / CSS
苹果M1芯片安装nginx 并且部署vue项目步骤详解
2021/11/20 Servers