POZNAN, POL - FEB 6, 2021: Laptop computer displaying logo of WordPress, a free and open-source content management system (CMS) written in PHP and paired with a MySQL or MariaDB database

Jak ustawić limit pamięci dla WordPressa (WP_MEMORY_LIMIT)

Komunikat błędu

				
					Fatal error: Allowed memory size of 12345678 bytes 
exhausted (tried to allocate 23456789 bytes) in public_html/wp-includes/plugin.php 
on line 1111
				
			

Błąd informuje o ilości pamięci, która jest aktualnie wykorzystywana oraz ile bajtów już się nie zmieściło. Podana jest również ścieżka do pliku, który w którym wystąpił ten błąd i konkretna linijka kodu w tym pliku. Jest to informacja przydatna, jeśli żadna z podanych poniżej metod zwiększenia limitu nie zadziała.

Lub też inna wersja komunikatu:

				
					Fatal error: Out of memory (allocated 12345678) (tried to allocate 23456789bytes) 
in public_html/wp-includes/plugin.php 
on line 1000
				
			

Obydwa komunikaty informują, że skończyła się pamięć dla skryptów PHP. Wynika to z ograniczeń serwera i ogranicza się głównie do zmiany konfiguracji. Czasami jednak, szczególnie na darmowych serwerach może się okazać, że takiej konfiguracji nie ma lub maksymalny limit jest mocno ograniczony.

Zwiększenie limitu pamięci dla WordPressa

Domyślnie WordPress przydziela do 40 MB

Jeśli serwer zwraca powyższy błąd oznacza, że powyższe wartości są za małe.

Jaki limit jest odpowiedni?

To zależy od tego co wykonuje wywołująca błąd wtyczka/szablon.

Zazwyczaj wystarczy 128 MB ale jeśli wtyczka pobiera np. duży plik xml czy listę kilkudziesięciu tysięcy produktów to może nie wystarczyć.

Sposoby na zwiększenie limitu pamięci WordPress

  • Edycja pliku php.ini
  • Edycja pliku .htaccess
  • Edycja pliku wp-config.php

php.ini

Konieczny będzie dostęp do pliku php.ini, hostingi współdzielone bardzo rzadko pozwalają na edycje pliku.

Aby zmienić wartość należy odnaleźć linijkę:

				
					memory_limit = xxxM
				
			
i zmienić wartość w miejscu xxx
M – oznacza wartość w megabajtów.

 

Edycja pliku .htaccess

Jeśli edycja php.ini nie pomogła lub nie ma dostępu do tego pliku można spróbować edytować plik .htaccess na serwerze.
Plik .htaccess znajduje się w głównym katalogu WordPressa.
Na końcu pliku należy dodać poniższą linijkę z ustalonym limitem pamięci.

				
					php_value memory_limit xxxM
				
			

Edycja pliku wp-config.php

W przypadku gdy żaden z powyższych sposobów nie pomoże, pozostaje edycja pliku wp-config.php w głównym katalogu WordPressa.
Należy dodać poniższą linijkę na końcu pliku ale przed komentarzem „..Miłego blogowania!”.

				
					define('WP_MEMORY_LIMIT', 'xxxM');
				
			

Nic nie pomaga. Zmień wersję PHP

Może się zdarzyć, że żadna z opcji nie zadziała. Hostingi często nie pozwalają na edycję limitu pamięci lub ten limit w wybranym pakiecie jest mocno ograniczony. Należy wówczas skontaktować z administratorem z prośbą o zwiększenie limitu pamięci. Jeśli maksymalny limit pamięci nie będzie wystarczający konieczna będzie zmiana pakietu na wyższy lub po prostu zmiana hostingu.

Jest jeszcze jedna możliwość! Wiele hostingów pozwala na samodzielną zmianę wersji PHP do najnowszej wersji 7 lub też umożliwia taką zmianę na żądanie. Nowy PHP jest tak wydajny, że bardzo często nie trzeba zwiększać limitu pamięci.

Wtyczki, które mają problemy z pamięcią na PHP 5.6 i starszych wersjach nie stwarzają problemów przy PHP 7 przy niższych limitach pamięci. Uwaga! Przed aktualizacją PHP należy upewnić się, że wszystkie wtyczki w sklepie wspierają nową wersję.