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ś.

WordPressJak 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!