Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel干预内存泄漏?_Php_Laravel_Laravel 4_Memory Leaks - Fatal编程技术网

Php Laravel干预内存泄漏?

Php Laravel干预内存泄漏?,php,laravel,laravel-4,memory-leaks,Php,Laravel,Laravel 4,Memory Leaks,我正在尝试将图像上载到本地主机。如果它是一个小图像(不超过1MB),则没有问题。但当我试着上传3MB的图像时。Php说 致命错误:第115行C:\Users\Tharit\Desktop\Work\Pixelbar\Code\ecompro\vendor\intervention\image\src\intervention\image\Gd\Decoder.php中允许的内存大小为134217728字节(尝试分配18048字节) 不应该这么多。这是代码,在图片上传部分 if (

我正在尝试将图像上载到本地主机。如果它是一个小图像(不超过1MB),则没有问题。但当我试着上传3MB的图像时。Php说

致命错误:第115行C:\Users\Tharit\Desktop\Work\Pixelbar\Code\ecompro\vendor\intervention\image\src\intervention\image\Gd\Decoder.php中允许的内存大小为134217728字节(尝试分配18048字节)

不应该这么多。这是代码,在图片上传部分

        if (Input::hasFile('profile_picture'))
            {
                $old_profile_pic= $user->profile_pic;
                $profile_picture = Input::file('profile_picture');
                $profile_picture_size=getimagesize($profile_picture);
                if($profile_picture_size[0]>$profile_picture_size[1])
                {
                    $mainside = $profile_picture_size[1];
                    $cordx=($profile_picture_size[0]-$profile_picture_size[1])/2;
                    $cordx=(int) $cordx;
                    $cordy=0;
                }
                else
                {
                    $mainside = $profile_picture_size[0];
                    $cordy=($profile_picture_size[1]-$profile_picture_size[0])/2;
                    $cordy=(int) $cordy;
                    $cordx=0;
                }
                $filename  = time() .$user->id . '.' . $profile_picture->getClientOriginalExtension();
                $path = public_path('img/user/' . $filename);
                Image::make($profile_picture->getRealPath())
                            ->crop($mainside,$mainside,$cordx , $cordy)
                            ->resize(100, 100)
                            ->save($path);
                $user->profile_pic = 'img/user/'.$filename;
                if($old_profile_pic != 'img/user/default_profile.gif')
                    {$imagecheck=1;}
            }

检查php.ini文件中的这一行

上载\u最大\u文件大小=1M

并将其更改为上载\u max\u filesize=10M


或者将“1M”更改为任何其他所需的文件大小(以MBs为单位)

必须在php ini中设置许多参数,才能上载大型文件。它们是:

upload_max_filesize
post_max_size
max_input_time
max_execution_time
memory_limit
您应该可以在PHPINI文件中找到有用的注释来设置它们


另外,这是一个内存错误,所以我认为它与文件上传无关。内存限制应该可以修复它。尝试将memory_limit设置为-1以分配无限内存,并确定这是否真的是内存问题。

我已将其更改为5M,但这并没有解决问题。我想这是关于内存限制的问题,现在设置为128M,但我不认为上传3M图片需要这么多。是吗?不,这不是关于内存的限制。但是如果你的上传文件大小在之前是1M,那么你需要在更改后重新启动你的服务器以使其生效是的,我已经更改了它,我认为这不是一个问题。我怀疑问题在于你调整了图像的大小。如果这是使用gd,然后,您需要允许图像高度x宽度x 4字节的内存用于预调整和后调整大小images@MarkBaker你的意思是pre+post?我的意思是,你需要允许足够的内存在PHP内存中同时拥有完整大小的图像和缩略图。创建新图像的内存使用量将远远大于上传图像的大小。您上传的图像很可能是压缩格式的。当您运行此操作时,它正在创建一个真彩色图像,因此内存使用量将类似于高度*宽度*通道*(魔法常数);因此,您正在上载的图像一旦解压缩,可能会占用比预期多得多的内存。本例中的“魔法常数”为1.7(取自)@StephenMtl这对我来说是件新鲜事。我应该学习更多!谢谢,我知道如果我设置一个内存限制,它会起作用。但将3M图像上传到128M内存限制的php不是太多了吗?对不起,我真的不知道。我不太明白这些内存问题。我认为将内存限制设置为unlimit不是一个好方法。你能给出确切的代码行,看看我是否能解决这个问题吗<代码>C:\Users\Tharit\Desktop\Work\Pixelbar\code\ecompro\vendor\intervention\image\src\intervention\image\Gd\Decoder.php,第115行$canvas=imagecreatetruecolor($width,$height);这是第115行的代码,你可以看到它是laravel软件包的一部分的完整页面;干预