我写了一个脚本来上传和调整图像图像的大小,它曾经很好地工作 但最近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行
答案 0 :(得分:1)
首先,打开错误报告,以便php告诉您问题所在:
error_reporting(E_ALL);
ini_set("display_errors", 1);
我认为上传有效。但是可能存在内存限制。图像分辨率越大,imagecreatetruecolor
和imagecopyresampled
消耗的内存就越多。
请尝试以下方法:
ini_set( 'memory_limit', '255M');
注意:255M
只是一个疯狂的猜测,取决于源和目标图像的大小,消耗的内存可以更高。
要获得更持久的解决方案,我在我的项目中使用php.net上发布的此函数的变体: http://php.net/manual/en/function.imagecreatefromjpeg.php#64155