首页 » PHP » PHP上传图片文件报内存错误的问题

PHP上传图片文件报内存错误的问题

5023 3

这几天在测试身份证上传出错的问题时碰到一个奇怪的问题,个别用户反映身份证上传不成功,一直出错,但是tiandi自己试了用手机拍摄的身份证照片即使2M多的也能通过PC或者手机上传成功,已经排除IE不兼容的问题。

报错的内容一直是说内存不足,类似这种:

Fatal error: Allowed memory size of 6744324432 bytes exhausted。

问用户要了上传出错的图片文件,才500K左右,本地调试依旧是同样错误。见鬼了,尼妹的PHP开的是64M的内存上限,一张500K的照片跟我说内存不足,我去。报错是由imagecreatefromgif/jpeg/png的函数引起的,没有办法之下,只能去研究这几个函数的计算方式。结果最终发现端倪,这几个函数是类似用逐行读取的方式去读取图片文件,然后写入内存,那张500K的用户身份证照片不知道是用什么东西压缩的,像素大小依旧是5000X3900,尼妹的,不知道哪款狗日的图片处理软件做的图片,还是现在的图像处理软件都有这种功能了。

在身份证上传里加上以下判定,解决报错的问题。

$imagearray = getimagesize($img_file);
if(!$imagearray) {
	show_message('非法图片。', $_LANG['back_page_up'], "user.php?act=sfz_img", 'error');
	exit;
}
else {
	$memory = get_bytes(ini_get('memory_limit'));
	if(($imagearray[0] * $imagearray[1] * 4) > $memory ) {
		show_message('图片尺寸过大或者图片像素('.$imagearray[0].'*'.$imagearray[1].')过大,请调整后再次上传。', $_LANG['back_page_up'], "user.php?act=sfz_img", 'error');
		exit;
	}
}
文章评分2次,平均分5.0

本文原始地址:https://www.tiandiyoyo.com/2014/11/fatel-error-memory-problem-on-php/
本站所有文章,除了特别注明外,均为本站原创,转载请注明出处来自www.tiandiyoyo.com

您可能还会对以下文章感兴趣:

    没有相关的文章

评论前先开启评论开关:


3 Comments

  1. muzi :

    内容好专业。

  2. 郑永 :

    问题还真多,哈哈。。你会一直围绕这个问题跟新博客。。。

载入分页评论...