打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
解决php上传大附件的问题--Php、MySQL、Bugfree
部门bug系统采用bugfree,由于不能上传大附件,需要解决一下。
1.修改bugfree的配置:
在bugfree的配置文件中:bugfree目录的Include中的文件:Config.inc.php中找到
$_CFG['File']['MaxFileSize'] 这个参数,设置到10M
在bugfree的页面中,已经显示可以上传10M附件了,但是上传大文件失败;
2. 解决MySQL的大文件问题:
http://dev.mysql.com/doc/refman/5.1/zh/problems.html#packet-too-large
http://blog.csdn.net/wangpingpaul/archive/2009/04/15/4075568.aspx
原来以为bugfree的所有内容都放在MySQL中,首先从MySQL着手。
MySQL要设定最大packet的大小(缺省为1M),设定方式为:
在/etc/my.cnf中,添加: set-variable=max_allowed_packet=16M,重启MySQL
进入到MySQL,输入命令: show variables;
找到:max_allowed_packet这一行,值为:16777216,生效了。
但是Bugfree还是无法上传2M多的文件
3.可能是Php的问题:
按照网上的说法,php的上传,也有限制大小的问题。
修改php.ini的修改方法修改配置(都是网上抄的,都差不多),修改/etc/php.ini (系统中只找到这个php.ini文件,也是后面错误的关键)
http://www.diybl.com/course/4_webprogram/php/phpjs/20090307/159333.html#
http://www.w3school.com.cn/php/php_file_upload.asp
http://www.phpchina.com/html/97/14397-4443.html
参数 设置 说明
file_uploads on 是否允许通过HTTP上传文件的开关。默认为ON即是开
upload_tmp_dir -- 文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹
upload_max_filesize 8m 望文生意,即允许上传文件大小的最大值。默认为2M
post_max_size 8m 指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M
说明
一般地,设置好上述四个参数后,在网络正常的情况下,上传<=8M的文件是不成问题
但如果要上传>8M的大体积文件,只设置上述四项还一定能行的通。除非你的网络真有100M/S的上传高速,否则你还得继续设置下面的参数。
max_execution_time 600 每个PHP页面运行的最大时间值(秒),默认30秒
max_input_time 600 每个PHP页面接收数据所需的最大时间,默认60秒
memory_limit 8m 每个PHP页面所吃掉的最大内存,默认8M
修改后(上述表格中的8M,在我这里都设置成20M)  ,重启apache,但是还是不行。
把bugfree的源码也看了半天(php自己从来么有学过,只能现学现卖),编写了一些php代码,发现问题:
php文件上传,还有错误标识,把错误表示打出来:
$_FILES['userfile']['name'] 客户端机器文件的原名称。
$_FILES['userfile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。
$_FILES['userfile']['size'] 已上传文件的大小,单位为字节。
$_FILES['userfile']['tmp_name'] 文件被上传后在服务端储存的临时文件名。
$_FILES['userfile']['error'] 和该文件上传相关的错误代码
值:0; 没有错误发生,文件上传成功。
值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
值:3; 文件只有部分被上传。
值:4; 没有文件被上传。
发现结果是1,说明刚才修改的php.ini没有发生效果。可能的原因有2点
1. 修改错了
2. 根本没有读到这个php.ini
第二种可能性比较大。
首先排除第一种可能性了。如何显示到底读取那个php.ini?当前php的maxfile配置是多少?
还好知道有一个phpinfo,自己写了一个php页面:非常简单就只有: <?php echo phpinfo(); ?>
把php的所有信息都打印出来。
检查:果然maxfilesize只有1M,php.ini读的也不是/etc下的。
按照phpinfo中显示的php.ini的目录位置,把php.ini文件复制过去,重启apache,问题解决了。
还有一种方法,在apache中指定php的配置文件:
在Apache中改变php.ini的路径的方法如下:
打开httpd.conf,
找到 LoadModule php5_module d:/AppServ\php5\php5apache2_2.dll,在其下面增加多一行代码:
PHPIniDir “D:/php5″
即php.ini所在的文件夹;
保存,重启Apache即开始生效。
总结:
修改php参数的时候,花费了最多的时间。问题在于:前2步修改后,对修改的效果做了校验,确信修改的参数发生了效果,但是最后修改php的时候,没有做这一步,浪费了大量的时间。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Apache+php+mysql在windows下的安装与配置图解(二)
bugfree安装与配置
Linux+Apache+Mysql+PHP典型配置(3)
Apache与php配置
WAMP调试php关闭notice警告
php5.2和apache2.2的集成配置
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服