使用php上传照片的最佳方式:允许的内存大小为67108864字节

时间:2013-05-22 16:15:55

标签: php memory upload photo

在我的网站上,用户可以上传自己的照片。 php代码将它们存储在图像中,制作缩略图,重命名它们并将它们存储在网站上。这些照片必须<2MB,但是当用户最近告诉我他在尝试上传900KB照片时出现了致命错误“允许的内存大小为67108864字节耗尽”猜测,一个大的,宽的,但压缩得很好的JPEG)。

在我的共享托管服务器上,我无法更改php.ini。上传代码目前如下所示:

            $source = imagecreatefromjpeg($value['tmp_name']);
            $width_source = imagesx($source);
            $height_source = imagesy($source);
            $max = max($width_source,$height_source);

            $ratio = $max/min($max,1000);
            $width_destination = $width_source/$ratio;
            $height_destination = $height_source/$ratio;
            $width_miniature = 100*$width_source/$height_source;
            $height_miniature = 100;

            $destination = imagecreatetruecolor($width_destination, $height_destination);
            $adress = '/home/photos/photo'.$id.'.jpg';
            imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);
            imagejpeg($destination, $adress);
            chmod($adresse, 0644);

            $miniature = imagecreatetruecolor($width_miniature, $height_miniature);

                                            etc etc to copy miniature

是否有其他方式/方法可以上传大型照片或绕过php内存限制?

1 个答案:

答案 0 :(得分:0)

您可以使用ini_set方法动态更改ini设置

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

如果您不能使用此方法,则返回false而不是设置值。