2015-01-29 6 views
2

Я пытаюсь загрузить изображение на свой localhost прямо сейчас. Это не проблема, если это небольшое изображение (не более 1 МБ). Но когда я пытаюсь загрузить около 3 МБ изображения. Php:Ошибка утечки памяти Laravel?

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 18048 bytes) in C:\Users\Tharit\Desktop\Work\Pixelbar\Code\ecompro\vendor\intervention\image\src\Intervention\Image\Gd\Decoder.php on line 115

Это не должно быть так много. Это код, при загрузке изображения.

 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;} 
      } 
+0

Я подозреваю, что проблема заключается в изменении размера изображения. Если это используется gd, вам нужно разрешить высоту изображения x ширину x 4 байта памяти для изображений до и после изменения размера –

+0

@MarkBaker вы имеете в виду pre + post? – Expl0de

+0

Я имею в виду, что вы должны позволить достаточно памяти иметь как полноразмерное изображение, так и миниатюру в памяти PHP одновременно. –

ответ

0

проверить файл php.ini для этой линии

upload_max_filesize = 1M

и изменить его upload_max_filesize = 10M

или изменения "1М" для любого другого размера требуемого файла в MBs

+0

Я изменил его 5M, но это не исправить. Я думаю, что речь идет о memory_limit, который установлен на 128M прямо сейчас, но я не могу загрузить 3M-изображение. Имеет ли это? – Expl0de

+0

Нет, это не о memory_limit. Но если ваш upload_max_filesize был раньше 1M, тогда вам нужно будет перезапустить ваш сервер после внесения изменений, чтобы он вступил в силу – Prateek

+0

Да, я уже изменил его до этого, я думаю, что это проблема бота – Expl0de

0

Существует ряд параметров, которые вы должны установить в php ini, чтобы сделать большие загрузки файлов возможными. Это:

upload_max_filesize 
post_max_size 
max_input_time 
max_execution_time 
memory_limit 

Вы должны найти полезные комментарии, чтобы установить их в файле php ini.

Плюс, его ошибка памяти, поэтому я думаю, что это не имеет никакого отношения к загрузке файла. memory_limit должен это исправить. Попробуйте установить memory_limit в -1, чтобы назначить неограниченную память и выяснить, действительно ли это проблема с памятью.

+0

Я знаю, что это сработает, если Я устанавливаю ограничение памяти. Но не слишком много для загрузки изображения 3M, до 128M памяти лимита php? Извините, но я действительно не знаю. Я не понимаю эту память. – Expl0de

+0

И я думаю, что ограничение памяти для неограниченного доступа - не лучший способ сделать. – Expl0de

+0

Можете ли вы дать точную строку кода, чтобы узнать, могу ли я решить проблему? 'C: \ Users \ Tharit \ Desktop \ Work \ Pixelbar \ Code \ ecompro \ vendor \ вмешательство \ image \ src \ Intervention \ Image \ Gd \ Decoder.php в строке 115' –