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 执行系统外部命令 system() exec() passthru()
Aug 11 PHP
php入门之连接mysql数据库的一个类
Apr 21 PHP
php生成略缩图代码
Jul 16 PHP
深入php常用函数的使用汇总
Jun 08 PHP
ThinkPHP独立分组使用的注意事项
Nov 25 PHP
使用Appcan客户端自动更新PHP版本号(全)
Jul 31 PHP
用PHP写的一个冒泡排序法的函数简单实例
May 26 PHP
PHP实现腾讯与百度坐标转换
Aug 05 PHP
PHP 进度条函数的简单实例
Sep 19 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
Mar 12 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
Oct 16 PHP
PHP 实现链式操作
Mar 09 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
php错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
javascript 混合的构造函数和原型方式,动态原型方式
2009/12/07 Javascript
javascript for循环设法提高性能
2010/02/24 Javascript
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
2010/09/10 Javascript
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
2010/11/23 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
2013/10/29 Javascript
Jquery对象和Dom对象的区别分析
2014/11/20 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
Bootstrap每天必学之媒体对象
2015/11/30 Javascript
学习JavaScript设计模式之观察者模式
2020/04/22 Javascript
Vue组件tree实现树形菜单
2017/04/13 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
基于Vue自定义指令实现按钮级权限控制思路详解
2018/05/23 Javascript
Vue中的v-for循环key属性注意事项小结
2018/08/12 Javascript
jQuery实现的卷帘门滑入滑出效果【案例】
2019/02/18 jQuery
vue项目创建步骤及路由router
2020/01/14 Javascript
vue 实现动态路由的方法
2020/07/06 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
Python中处理unchecked未捕获异常实例
2015/01/17 Python
sublime python3 输入换行不结束的方法
2018/04/19 Python
python使用Plotly绘图工具绘制水平条形图
2020/03/25 Python
python getpass模块用法及实例详解
2019/10/07 Python
Django单元测试中Fixtures的使用方法
2020/02/26 Python
Python matplotlib可视化实例解析
2020/06/01 Python
使用Keras中的ImageDataGenerator进行批次读图方式
2020/06/17 Python
灵活运用CSS3特性绘制简易版围棋效果
2016/09/28 HTML / CSS
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
专科文秘应届生求职信
2013/11/18 职场文书
驾驶员岗位职责
2014/01/29 职场文书
新农村建设典型材料
2014/05/31 职场文书
研究生导师推荐信
2014/09/06 职场文书
2015年街道办事处工作总结
2015/05/22 职场文书
销售人员管理制度
2015/08/06 职场文书