Blog

Fatal error: Out of memory tried to allocate bytes

Podczas korzystania z WordPressa, sporo jego użytkowników w pewnym momencie natyka się na pewien błąd, którego przykładowy komunikat wygląda jak niżej:

Fatal error: Out of memory (allocated 59244544) (tried to allocate 10632 bytes) in /homepages/2/d375563231/htdocs/myfolder/wp-content/plugins/nextgen-gallery/lib/gd.thumbnail.inc.php on line 179

Najczęściej owy błąd pojawia się w przypadku próby instalacji WordPressa na darmowych serwerach, próby jego aktualizacji, lub próby aktywowania jakiejś wtyczki albo szablonu.
Powyższy kod prezentuje komunikat błędu wynikły najprawdopodobniej w wyniku próby aktywowania wtyczki nextgen-gallery, co widać po katalogach w adresie do skryptu który na błąd natrafił – wp-content/plugins/nextgen-gallery/

 

Co ten błąd oznacza?

Fatal error: Out of memory … – oznacza że skończyła się skryptom PHP pamięć, jaka została dla nich przydzielona. Jest to kwestia ograniczeń administracji serwera, lub kwestia ograniczeń w konfiguracji serwera – jeśli mamy do takowych dostęp, lub też cały serwer należy do Nas. Zazwyczaj pojawiają się dwie wersje komunikatu:

Fatal error: Out of memory (allocated XXX) (tried to allocate YYY bytes) in ...

Fatal error: Allowed memory size of XXX bytes exhausted (tried to allocate YYY bytes) in ...

W samym komunikacie można znaleźć informację ile bajtów pamięci jest obecnie w użyciu, oraz ile bajtów się już nie zmieściło. Dalej znajdziemy także informację który plik skryptowy natrafił na błąd, oraz w której linijce owy błąd wystąpił. Zazwyczaj te informacje nikogo szczególnie nie interesują, chyba że jesteście programistami którzy właśnie położyli swojego WordPressa, wtedy nos w kod i optymalizować. Jeżeli natomiast jesteście zwykłymi użytkownikami, wtedy możecie spróbować jednego z poniższych rozwiązań.

 

Zwiększenie limitu pamięci dla PHP

Aby pozbyć się problemu, należy zwiększyć limit pamięci dla PHP. Oczywiście nie zawsze to zadziała, ale można spróbować. O ile zwiększymy ten limit – to zależy od Was, zazwyczaj 64M lub 128M wystarczy w zupełności. Mamy 3 możliwości zwiększenia tego limitu.

1. Edycja pliku .htaccess

Jeżeli takowy posiadamy i używamy, to znajduje się on w głównym katalogu WordPressa – w większości klientów FTP jest on ukryty ( trzeba w ustawieniach pomajstrować aby pliki ukryte nam wyświetlało ). Jeżeli już go znajdziemy, to należy dopisać w nim taką linijkę:

php_value memory_limit 64M

2. Edycja pliku wp-config.php

Domyślnie WordPress sam sobie przydziela 32Mb pamięci dla PHP, w związku z czym 32M lub mniej w ogóle nie ma sensu definiować. Przykładowy kod wraz z linijką poniżej której go wklejamy:

/* To wszystko, zakończ edycję w tym miejscu! Miłego blogowania! */
define(‘WP_MEMORY_LIMIT’, ’64M’);

3. Edycja pliku php.ini

Jeżeli jesteśmy w posiadaniu serwera dedykowanego, VPSa lub też po prostu mamy dostęp do php.ini, wtedy możemy zmienić ustawienia limitu wyszukując kod podobny do tego:

memory_limit = 64M

W przypadku większości hostingów nie będziemy mieli dostępu do pliku php.ini, w związku z czym zostają nam jedynie pierwsze dwie opcje. Jeżeli żadna z nich nie działa, oznacza to że administrator serwera zabronił zmieniania limitu pamięci dla PHP, i sami go nie zwiększymy. Dlatego w takim wypadku mamy kolejne dwie opcje – napisać do administratora i poprosić go o zwiększenie tego limitu, bądź zmiana pakietu albo hostingu na lepszy.

 

Sprawdzanie limitu pamięci dla PHP

Jest możliwość także sprawdzenia jaki mamy ustawiony limit pamięci dla PHP, i sprawdzenia czy można go zmienić drugim sposobem. Aby tego dokonać wystarczy utworzyć sobie plik test.php w głównym katalogu naszej strony, i wkleić do niego któryś z poniższych kodów:

<?php phpinfo(); ?>
<?php
	echo ini_get("memory_limit");
	ini_set("memory_limit","320M");
	echo ini_get("memory_limit");
	ini_restore("memory_limit");
	echo ini_get("memory_limit");
?>

Po czym zapisujemy zmiany w pliku, i wywołujemy go zaraz za adresem naszej strony, np. http://www.nasza-domena.pl/test.php

W przypadku pierwszego kodu, szukamy rzędu z memory_limit.
W przypadku drugiego kodu, powinny się wyświetlić trzy wartości, pierwsza oznacza nasz obecny limit pamięci, druga pokazuje limit pamięci po próbie zmiany go na 320M, trzecia pokazuje limit pamięci po przywróceniu go do oryginalnej wartości. Jeżeli nasza druga liczba wynosi 320, oznacza to że możemy sobie samemu zmienić limit pamięci, definiując nową wartość w pliku wp-config.php. W przypadku kiedy wszystkie liczby są takie same, wtedy możliwość zmiany została nam zablokowana.

Z ciekawości oraz dla potomnych, jeśli już sprawdzacie jaki macie limit pamięci, napiszcie w komentarzach z jakiego korzystacie hostingu, z jakiego pakiety, i ile taki limit wynosi. Dla przykładu, na hostingu lh.pl na wszystkich pakietach domyślny limit to 128M – ale można go sobie bez problemu samemu zmienić :)

Jeśli spodobał się Wam ten wpis albo okazał się przydatny, pomóżcie nam go wypromować aby trafił do jak największej ilości osób - wystarczy że podzielicie się nim z innymi:

11 Komentarzy

  1. Hosting nazwa.pl
    brak możliwość zmiany wartości :
    64M x3 :D

  2. Na niektórych hostingach faktycznie nadal jest problem tego typu, w większości jednak już poszli po rozum do głowy i dają wystarczające limity aby wszystkie popularne cmsy raczej działały stabilnie.

  3. Ja jeszcze niedawno miałem problem z hostingiem iswift. Zmienił się jednak z tego co wiem właściciel i jest o niebo lepiej i teraz faktycznie można korzystać z tego hostingu i nie ma takich kwiatów jak np out of memory :)

  4. Hosting: friko.pl
    Brak możliwości zmiany wartości:
    22M22M22M

  5. 1and1
    120M
    wyświetla się zmieniona liczba, ale przy większych plikach błąd nadal, będę musiał kod poprawić

  6. Najciekawsze to są przygody na z instalacją wordpressa na home.pl… tam to jest dopiero koszmar. O ile sama instalacja jeszcze przechodzi o tyle na etapie wtyczek zaczynają się problemy… .

  7. Parę lat temu też miałam ten problem przy wtyczce WP e-commerce u klienta. O ile dobrze pamiętam strona postawiona była na home.pl. Wpisy w .htaccess rozwiązały wtedy problem.

  8. na prv.pl 32M32M32M

  9. Niestety popularne hostingi typu home, nazwa czy zenbox często mają liczne ograniczenia powodujące problemy w instalacji i konfiguracji podstawowych wtyczek.

  10. Dzięki dobry Człowieku, pokazałeś GDZIE DOKŁADNIE wkleić define(‘WP_MEMORY_LIMIT’, ’64M’). Jesteś wielki! DZIAŁA!

  11. W moich plikach wp-config i htaccess nie ma ciągu znaków „MEMORY_LIMIT” :/

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Portal cały czas się rozwija, jeżeli chcielibyście nam w tym pomóc, to zapraszamy do kontaktu, nigdy za wiele rąk do pracy :)

Jeżeli macie jakieś sugestie odnośnie Portalu, jego treści, zawartości, albo znaleźliście jakieś błędy, lub literówki, nie wahajcie się napisać nam o tym.
Aby pomóc nam w promocji Portalu, podzielcie się nim na swoich blogach lub stronach. Jeżeli podoba się Wam nasza koncepcja, albo znaleźliście tutaj pomoc, to pomóżcie także innym do nas trafić.

Wystarczy nam nawet najzwyklejszy link w stopce, albo w sidebarze :)