1

在我的网站上,用户可以上传自己的照片。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 内存限制的方法/方法?

4

1 回答 1

0

您可以使用该ini_set方法即时更改 ini 设置

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

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

于 2013-05-22T16:17:34.353 回答