Błąd „Allowed memory size exhausted”, biały ekran po uruchomieniu wtyczki albo edytor, który zawiesza się przy zapisywaniu strony, często oznaczają, że proces PHP wykorzystał całą dostępną pamięć. Nie chodzi o miejsce na dysku ani RAM zainstalowany w komputerze użytkownika. Limit pamięci PHP określa, ile pamięci może zużyć pojedynczy skrypt podczas generowania strony, importowania produktów, wykonywania kopii zapasowej czy aktualizowania WordPressa.
Podniesienie limitu potrafi natychmiast odblokować import, panel administracyjny lub WooCommerce. Nie jest jednak sposobem na przyspieszenie każdej wolnej witryny. Gdy problem powoduje źle napisana wtyczka, zapętlone zapytanie do bazy danych albo przeciążony hosting, ustawienie 512 MB jedynie odsunie awarię i pozwoli wadliwemu procesowi zużyć więcej zasobów.
Najpierw potwierdź, że naprawdę brakuje pamięci
Najmocniejszym dowodem jest wpis w logu błędów zawierający komunikat podobny do:
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted
Liczba podawana jest w bajtach. Przykładowo 134 217 728 bajtów oznacza 128 MB, a 268 435 456 bajtów — 256 MB. Komunikat zwykle zawiera również informację, ile dodatkowej pamięci próbował przydzielić skrypt oraz w którym pliku wystąpił błąd. Nazwa pliku może wskazać wtyczkę, ale nie zawsze oznacza, że to właśnie ona jest winna. Proces mógł zużyć większość pamięci wcześniej, a zakończyć działanie dopiero przy wywołaniu funkcji WordPressa.
Aktualną wartość można sprawdzić w kokpicie:
Narzędzia → Stan witryny → Informacje → Serwer → Limit pamięci PHP
Warto też zajrzeć do sekcji diagnostycznej WooCommerce, jeżeli problem występuje podczas edycji produktów, obsługi zamówień lub generowania raportów. Informacja widoczna w panelu bywa jednak myląca, gdy hosting stosuje różne konfiguracje PHP dla strony internetowej, zadań CRON i poleceń uruchamianych przez SSH.
Objawy, które rzeczywiście mogą wskazywać na zbyt niski limit, to między innymi:
- biały ekran po aktywacji motywu lub wtyczki,
- zatrzymanie importu XML albo CSV bez czytelnego komunikatu,
- błąd podczas tworzenia dużej kopii zapasowej,
- brak możliwości zapisania rozbudowanej strony w Elementorze, Divi lub innym builderze,
- przerwana aktualizacja WordPressa albo WooCommerce,
- zawieszanie się panelu podczas pracy na dużej liczbie produktów i wariantów,
- błędy podczas generowania miniatur dużych zdjęć.
Nie każde spowolnienie ma związek z pamięcią. Jeżeli strona odpowiada wolno, ale w logach nie ma błędu memory exhausted, trzeba sprawdzić przede wszystkim czas wykonywania PHP, bazę danych, cache, zewnętrzne zapytania HTTP oraz wydajność serwera. Podniesienie limitu nie skróci zapytania SQL trwającego pięć sekund i nie zmniejszy zdjęcia ważącego 8 MB.
Rozsądny punkt wyjścia zależy od rodzaju serwisu:
- 128 MB — lekka strona firmowa lub prosty blog z niewielką liczbą wtyczek,
- 256 MB — typowa rozbudowana witryna, większy blog, mniejszy sklep albo strona wykorzystująca builder,
- 512 MB — WooCommerce z dużym katalogiem, LMS, marketplace, rozbudowane importy i bardziej wymagające zadania administracyjne,
- wartości powyżej 512 MB — tylko po sprawdzeniu logów i charakteru konkretnej operacji.
Sam PHP ma własną dyrektywę memory_limit, która ogranicza ilość pamięci przydzielanej skryptowi. WordPress może poprosić o określony limit, ale nie jest w stanie ominąć twardego ograniczenia narzuconego przez serwer.
Jak podnieść limit bez wyłączania strony
Pierwszą metodą powinien być panel hostingu. W polskich usługach opcja najczęściej znajduje się w sekcji „Ustawienia PHP”, „Konfiguracja PHP”, „PHP Options”, „MultiPHP INI Editor” albo „Select PHP Version”. Trzeba znaleźć parametr:
memory_limit
Na początek ustaw 256M, zapisz konfigurację i ponownie sprawdź Stan witryny. W sklepie WooCommerce lub przy ciężkich importach można przejść do 512M, ale dopiero wtedy, gdy 256 MB faktycznie okazuje się niewystarczające.
Ta metoda ma pierwszeństwo, ponieważ zmienia limit na poziomie PHP. Edycja plików WordPressa nie pomoże, gdy operator hostingu blokuje proces na niższej wartości.
Drugim krokiem jest plik wp-config.php, znajdujący się w głównym katalogu instalacji. Przed edycją trzeba pobrać kopię pliku. Literówka, brak apostrofu albo wstawienie kodu w złym miejscu może spowodować błąd krytyczny i odciąć dostęp do całej witryny.
Przed linią:
/* That's all, stop editing! Happy publishing. */
należy dodać:
define( 'WP_MEMORY_LIMIT', '256M' );
WordPress wykorzystuje WP_MEMORY_LIMIT dla standardowego działania witryny. Dla operacji wykonywanych na zapleczu można określić osobny limit:
define( 'WP_MAX_MEMORY_LIMIT', '512M' );
W praktyce sensowna konfiguracja dla większej strony wygląda następująco:
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );
Dzięki temu zwykłe odsłony nie dostają niepotrzebnie wysokiego limitu, a panel może wykorzystać więcej pamięci podczas aktualizacji, importów i edycji rozbudowanych treści.
Po zapisaniu zmian trzeba ponownie sprawdzić wartość w Stanie witryny. Jeżeli nadal widnieje 128 MB, oznacza to zazwyczaj jedno z trzech ograniczeń:
- hosting nie pozwala zmieniać
memory_limitz poziomu WordPressa, - konfiguracja PHP dla domeny ma niższy limit,
- plik
wp-config.phpzostał zmodyfikowany w niewłaściwej instalacji lub katalogu.
Na serwerze VPS limit można ustawić w pliku php.ini:
memory_limit = 256M
Zmiana może wymagać przeładowania usługi PHP-FPM lub serwera WWW. Samo zapisanie pliku nie zawsze wystarczy, ponieważ sposób wczytywania konfiguracji zależy od trybu pracy PHP.
Czasami operator udostępnia lokalny plik .user.ini. Wtedy stosuje się tę samą dyrektywę:
memory_limit = 256M
Metoda z plikiem .htaccess powinna być traktowana jako awaryjna:
php_value memory_limit 256M
Działa tylko w wybranych konfiguracjach Apache. Przy PHP-FPM albo FastCGI może spowodować błąd 500 i natychmiast wyłączyć stronę. Jeżeli tak się stanie, trzeba usunąć wpis przez FTP, SSH lub menedżer plików. Nie ma sensu wielokrotnie odświeżać witryny — serwer nie przyjmie nieobsługiwanej dyrektywy po kilku minutach.
Do jednorazowego sprawdzenia konfiguracji można użyć funkcji phpinfo(), ale plik z tą funkcją trzeba usunąć natychmiast po teście. Publicznie dostępny raport pokazuje wersję PHP, ścieżki systemowe, aktywne rozszerzenia i inne informacje przydatne również osobie szukającej słabych punktów serwera.
Kiedy wyższy limit tylko maskuje awarię
Jeżeli zwykła strona firmowa potrzebuje 512 MB lub 1 GB pamięci do wygenerowania pojedynczej podstrony, problemem nie jest „za mały WordPress”. Trzeba znaleźć proces, który zużywa zasoby.
Najpierw należy sprawdzić zmiany wykonane bezpośrednio przed wystąpieniem błędu. Jeżeli awaria pojawiła się po aktualizacji konkretnej wtyczki, jej tymczasowe wyłączenie ma wyższy priorytet niż dalsze zwiększanie pamięci. Gdy panel nie działa, nazwę katalogu wtyczki można zmienić przez FTP w katalogu:
/wp-content/plugins/
WordPress przestanie ją ładować. Jeżeli strona zacznie działać, trzeba sprawdzić dziennik zmian wtyczki, wymagania dotyczące PHP oraz zgłoszenia użytkowników. Nie należy od razu usuwać katalogu, szczególnie gdy wtyczka przechowuje dane konfiguracyjne lub obsługuje zamówienia.
Kolejne działania powinny być wykonywane w tej kolejności:
- Wyłącz ostatnio dodaną lub zaktualizowaną wtyczkę.
- Sprawdź log błędów, zwracając uwagę na powtarzające się nazwy plików i operacje.
- Przetestuj domyślny motyw na kopii stagingowej, jeżeli błąd występuje na froncie.
- Wyłącz duplikujące się funkcje, na przykład kilka systemów cache, optymalizacji obrazów albo kopii zapasowych.
- Sprawdź zadania CRON, importy, skanery bezpieczeństwa i backupy uruchamiane w tym samym czasie.
- Dopiero potem podnieś limit o kolejny poziom.
Szczególnie problematyczne są wtyczki, które działają poprawnie na małej stronie, ale zaczynają ładować wszystkie rekordy do pamięci po rozbudowaniu bazy. Dotyczy to między innymi eksportów, raportów sprzedaży, wyszukiwania produktów, skanowania plików oraz generowania kopii zapasowych. Na stronie z 500 wpisami problem może nie istnieć. Przy 50 tys. produktów ta sama operacja potrafi zająć setki megabajtów.
Duże obrazy również mają znaczenie. Plik JPEG o rozmiarze 10 MB po rozpakowaniu w pamięci może zajmować znacznie więcej, ponieważ biblioteka graficzna pracuje na pełnych danych obrazu, a nie na skompresowanej wielkości pliku. Generowanie kilku rozmiarów miniatur z fotografii 10 000 × 7000 pikseli potrafi zakończyć się błędem nawet przy stosunkowo wysokim limicie.
Wyższy limit nie zastąpi również cache. Cache ogranicza liczbę operacji wykonywanych przy kolejnych odsłonach, natomiast memory_limit jedynie określa maksymalny zasób dostępny dla pojedynczego procesu. To dwa różne mechanizmy.
Na hostingu współdzielonym limit 512 MB nie oznacza, że dziesięć równoległych procesów otrzyma łącznie 5 GB RAM-u. Operator może stosować dodatkowe ograniczenia dotyczące pamięci całego konta, liczby procesów PHP, CPU i operacji wejścia-wyjścia. W rezultacie pojedynczy import zacznie działać, ale przy większym ruchu serwer może ograniczyć pozostałe procesy. Właśnie dlatego ustawianie 1 GB „na wszelki wypadek” jest złą praktyką.
FAQ: limit pamięci WordPressa
Jaki limit ustawić na początek?
Dla większości stron sensownym punktem startowym jest 256 MB. Prosty blog często działa przy 128 MB, a większy sklep, LMS lub strona z rozbudowanym builderem może potrzebować 512 MB.
Czy WP_MEMORY_LIMIT może być wyższy niż memory_limit w PHP?
Można wpisać wyższą wartość, ale nie oznacza to, że serwer ją przyzna. Twardy limit PHP lub hostingu ma pierwszeństwo.
Czy zwiększenie limitu przyspieszy witrynę?
Tylko wtedy, gdy procesy zbliżały się do limitu lub kończyły błędem. Nie naprawi wolnej bazy danych, braku cache, ciężkich zdjęć ani przeciążonego serwera.
Czym różni się WP_MAX_MEMORY_LIMIT?
To limit przeznaczony głównie dla bardziej wymagających operacji administracyjnych. Może być wyższy niż limit stosowany podczas zwykłego wyświetlania strony.
Co zrobić po błędzie 500 wywołanym zmianą .htaccess?
Usuń dodaną linię php_value memory_limit przez FTP, SSH albo panel hostingu. Następnie zmień limit w ustawieniach PHP lub poproś operatora o pomoc.
Czy warto ustawić 1024M?
Nie bez konkretnego powodu. Jeżeli standardowa odsłona wymaga 1 GB pamięci, trzeba znaleźć wadliwą wtyczkę, zapytanie lub operację, zamiast zwiększać zasoby.
Czy limit pamięci dotyczy całego serwera?
memory_limit dotyczy pojedynczego procesu PHP. Hosting może równocześnie stosować osobny limit dla całego konta oraz ograniczać liczbę procesów.
Zacznij od logu błędów, nie od edycji plików. Gdy widzisz komunikat „Allowed memory size exhausted”, ustaw 256 MB w panelu PHP, a następnie skonfiguruj WP_MEMORY_LIMIT w wp-config.php. Jeżeli zwykła odsłona nadal wyczerpuje pamięć, nie zwiększaj limitu po raz kolejny. Najpierw wyłącz ostatnio zmienioną wtyczkę i usuń proces, który zużywa zasoby bez kontroli.
