Kilka dni temu napisał do mnie pewien człowiek z prośbą o pomoc przy instalacji WordPressa 2.9. Zeszło mi kilka dni ale ostatecznie postanowiłem odpisać tutaj na stronie, a nie w mailu – może moja odpowiedź przyda się jeszcze komuś.
Jak pisałem we wcześniejszym wpisie, po ściągnięciu i zainstalowaniu nowych plików aktualizacyjnych WordPress wymaga od nas zaktualizowania bazy danych. Na tym etapie mojemu rozmówcy pojawił się poniższy komunikat:
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 35 bytes) in /***/wp-includes/wp-db.php on line 734
Błąd tego typu lub podobny może pojawiać się również przy aktualizacji pluginów lub nawet na wcześniejszych etapach aktualizacji samego WordPressa.
Ale co oznacza Fatal error: Allowed memory size of?
Otóż komunikat ten oznacza, iż WordPress potrzebuje więcej pamięci do wykonania zadania niż zostało mu systemowo udostępnione (ang. maximum amount of memory a script may consume).
Allowed memory size of – mówi nam o ilości dostępnej pamięci, a tried to allocate – mówi o ile została ona przekroczona. W podanym przykładzie jedynie o 35 bajtów :)
Najważniejsze: nie ma się co martwić o bazę i pliki – nic się nie uszkodziło…
Jak sobie z tym poradzić?
Wyjście najprostsze, ale wymagające dostępu do konfiguracji serwera lub dobrego kontaktu z administratorem albo zwykłego udostępnienia pliku php.ini do edycji.
Tak więc jeśli spełniamy jeden z tych warunków:
- otwieramy plik php.ini
- odnajdujemy dział ; Resource Limits ;
- wyszukujemy linijkę: memory_limit = **M ; Maximum amount of memory a script may consume (16MB)
- zwiększamy wartość **M do 64MB lub więcej, w zależności od potrzeby… (w przedstawionym przypadku trzeba dać powyżej 64M)
- zapisujemy plik
- restartujemy nasz serwer – bardzo ważne!
- próbujemy ponownie wykonać naszą problematyczną aktualizację/instalację.
Jeśli nie spełniliśmy żadnego z wymagań przedstawionych w poprzednim punkcie możemy spróbować shackować WordPressa :)
W nagrodę możemy liczyć na sprawność hakera. Wybierając tę wersję wydarzeń możemy również pójść dwiema drogami:
Pierwsza droga – prostsza:
- logujemy się na nasz serwer przez FTP
- wyszukujemy w głównym katalogu plik wp-config.php
- otwieramy plik i na samym początku (zaraz po <?php) dodajemy nową linijkę:
define('WP_MEMORY_LIMIT','64M');
- oczywiście jako wartość można podać 64M lub więcej i warto pamiętać o znaku ; (średnika) na końcu linijki
- zapisać plik i spróbować jeszcze raz instalacji/aktualizacji
Druga droga – kłopotliwa:
- logujemy się na nasz serwer przez FTP
- wchodzimy do podkatalogu wp-admin
- wyszukujemy w katalogu plik install.php
- otwieramy plik i na samym początku (zaraz po <?php) dodajemy nową linijkę:
ini_set('memory_limit','64M');
- oczywiście jako wartość można podać 64M lub więcej i warto pamiętać o znaku ; (średnika) na końcu linijki
- zapisać plik i spróbować jeszcze raz instalacji/aktualizacji
Uwaga! Ostatnia metoda będzie działać jedynie do następnej aktualizacji WordPressa ponieważ wtedy plik /wp-admin/install.php zostanie nadpisany nową wersją.
A jak Wy radzicie sobie z problemami z pamięcią? Ciekaw jestem też, czy któreś z podanych przeze mnie rozwiązań zadziała w Waszym przypadku – piszcie śmiało w komentarzach!