不要上传更大的图片PHP

时间:2015-02-19 11:15:41

标签: php image upload

我写了一个脚本来上传和调整图像图像的大小,它曾经很好地工作 但最近2天我收到内部服务器错误。这种情况发生在更大的图像上,并且#1; 7 mb"较小的图像像1 mb一样可以正常工作。我试图删除缩放因子,因此图像不会调整大小,但它仍然无法正常工作。 我在iPage上托管,以及用于所有图像大小的脚本。它是服务器大小的错误还是脚本错误?任何优化代码的技巧。

谢谢大家

<?php
$id = $_POST["id"];
$page = $_POST["page"];

$target_dir = "";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);

$uploadedfile = $_FILES['fileToUpload']['tmp_name'];

$src = imagecreatefromjpeg($uploadedfile);

list($width,$height)=getimagesize($uploadedfile);

$divide = 1010/$width;
$newwidth=$width*$divide;
$newheight=$height*$divide;
$tmp=imagecreatetruecolor($newwidth,$newheight);

imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);

$filename = $_FILES['fileToUpload']['name'];
imagejpeg($tmp,'../presentation/'.$target_file,100);

imagedestroy($src);
imagedestroy($tmp);
?>

错误代码:

  

20150218T075818:mpooutlet.com/scripts/uploadimg.php PHP致命错误:   允许的内存大小为33554432字节耗尽(尝试分配   22464字节)   /hermes/bosnaweb04a/b2659/ipg.mpooutletcom/scripts/uploadimg.php on   第13行

1 个答案:

答案 0 :(得分:1)

首先,打开错误报告,以便php告诉您问题所在:

error_reporting(E_ALL);
ini_set("display_errors", 1); 

我认为上传有效。但是可能存在内存限制。图像分辨率越大,imagecreatetruecolorimagecopyresampled消耗的内存就越多。 请尝试以下方法:

ini_set( 'memory_limit', '255M');

注意:255M只是一个疯狂的猜测,取决于源和目标图像的大小,消耗的内存可以更高。

要获得更持久的解决方案,我在我的项目中使用php.net上发布的此函数的变体: http://php.net/manual/en/function.imagecreatefromjpeg.php#64155