Jeden z najczęstszych komunikatów błędów WordPress brzmi mniej więcej tak: "Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /wp-includes/...". Pojawia się zwykle w najgorszym możliwym momencie: w środku aktualizacji wtyczki, podczas zapisywania długiej strony w edytorze, podczas uploadów media lub bezpośrednio po przełączeniu na bardziej wymagający motyw. Rozwiązaniem jest prawie zawsze zwiększenie limitu pamięci PHP. Problem polega na tym, że nie ma jednego limitu pamięci. WordPress ma co najmniej trzy różne, plus czwarty na poziomie PHP, i wchodzą w interakcje w sposób, który zaskakuje ludzi. Ten przewodnik wyjaśnia, który stosuje się w której sytuacji i jak go zwiększyć w różnych konfiguracjach hostingu.
O którym "limicie pamięci" tak naprawdę mówimy?
Gdy żądana jest strona WordPress, mogą wchodzić w grę cztery limity:
- PHP
memory_limitwphp.ini. Twardy sufit egzekwowany przez sam PHP. Nic wewnątrz WordPress nigdy nie może go przekroczyć. Typowe domyślne wartości na nowoczesnych hostach to 128M lub 256M. WP_MEMORY_LIMIT. Własna stała WordPress, zdefiniowana wwp-config.php. Domyślnie 40M. WordPress zwiększa limit PHP do tej wartości przy uruchamianiu, ale tylko jeśliWP_MEMORY_LIMITjest wyższy niż obecny limit PHP. Jeśli Twój PHPmemory_limitjest już 256M, ta stała nie ma efektu.WP_MAX_MEMORY_LIMIT. Osobna stała, która stosuje się tylko wewnątrzwp-admin(panel, ekrany edycji, zarządzanie wtyczkami i motywami, biblioteka media). Domyślnie 256M. Ustaw to wyżej, gdy stronom admina brakuje pamięci, ale frontend działa dobrze.- Nadpisania hostera. Wiele shared i managed hostów twardo ogranicza PHP
memory_limitna poziomie serwera, niezależnie od tego, co mówi Twójphp.inilubwp-config.php. Na tych hostach samodzielne zwiększanie limitu po cichu zawiedzie i musisz skontaktować się z wsparciem.
Praktyczny model mentalny: WP_MEMORY_LIMIT jest dla frontendu, WP_MAX_MEMORY_LIMIT jest dla admina, a oba są dolnymi granicami, nie sufitami. Mogą tylko podnieść efektywny limit, nigdy nie obniżyć go poniżej ustawienia PHP. Ustawienie PHP jest faktycznym sufitem.
Ile pamięci faktycznie potrzebuje witryna WordPress?
Użyteczna gruba skala, oparta na tym, co InspectWP widzi w tysiącach skanów:
- 64M. Czysta instalacja WordPress z małym motywem i pięcioma dobrze skonfigurowanymi wtyczkami. Realistyczne dziś tylko na bardzo prostych witrynach, a nawet wtedy ciasno.
- 128M. Faktyczne minimum dla każdej poważnej witryny w 2026. Standardowy motyw, dziesięć lub piętnaście wtyczek, brak pagebuildera. Większość hostów domyślnie na tym.
- 256M. Rozsądny cel dla większości witryn. Pagebuildery (Elementor, Divi, Bricks, Beaver Builder), WooCommerce, większe frameworki motywów, wtyczki optymalizacji obrazów. To również domyślna wartość
WP_MAX_MEMORY_LIMITdla admina, co nie jest przypadkiem. - 512M. Sklepy WooCommerce z kilkoma setkami zamówień i wieloma rozszerzeniami. Witryny uruchamiające ciężkie pakiety SEO obok pagebuildera. Przetwarzanie obrazów na dużych bibliotekach media.
- 768M do 1024M. Większe sklepy WooCommerce, wielojęzyczne witryny z WPML lub Polylang, witryny członkowskie ze złożoną logiką ról, witryny uruchamiające zaplanowane importy.
- Powyżej 1024M. Jeśli naprawdę tego potrzebujesz na normalnej witrynie, zwykle coś jest nie tak. Konkretna wtyczka wycieka pamięć, zadanie importu ładuje całą bazę danych w pojedynczym procesie PHP lub motyw robi coś, czego nie powinien. Zwiększanie limitu obejdzie symptom na teraz, ale prawdziwe rozwiązanie leży gdzie indziej.
Pamięć jest tania, ale nieograniczona pamięć ukrywa błędy. Właściwym działaniem jest zwiększenie limitu tylko o tyle, aby witryna działała komfortowo, a nie ustawienie go na 4G "na wszelki wypadek".
Opcja 1: Zwiększ WP_MEMORY_LIMIT w wp-config.php
To najprostsza i najbardziej przenośna zmiana. Otwórz wp-config.php w katalogu głównym WordPress i dodaj następujące linie gdzieś nad komentarzem /* That's all, stop editing! Happy publishing. */:
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');Zapisz plik. WordPress zastosuje nowe limity przy następnym żądaniu. Frontend ma teraz maksymalnie 256M dostępnych, admin maksymalnie 512M. Nie potrzeba restartu.
Ważne zastrzeżenie: to działa tylko, jeśli memory_limit na poziomie PHP jest co najmniej tak wysoki, jak wartość, którą ustawiasz. Jeśli PHP jest ograniczony przez hosta do 128M, zdefiniowanie WP_MEMORY_LIMIT jako 512M nic nie robi. WordPress próbuje podnieść limit, a PHP odmawia. Komunikat błędu pozostaje ten sam. Przejdź do Opcji 2.
Opcja 2: Zwiększ PHP memory_limit na poziomie PHP
Jeśli sam WP_MEMORY_LIMIT nie wystarczy, faktyczne ustawienie PHP musi wzrosnąć. Gdzie to zmieniasz, zależy od hosta:
Na managed hostingu (Raidboxes, Kinsta, WP Engine, Cloudways, SiteGround, Pressable)
Te hosty prawie wszystkie oferują ustawienie w swoim panelu. Wyszukaj "Ustawienia PHP", "Limit pamięci PHP" lub podobne. Zmiana zwykle wchodzi w życie w ciągu sekund, nie potrzeba restartu z Twojej strony. Niektóre hosty (Raidboxes, WP Engine) ograniczają maksimum do 512M lub 768M ze względów wydajności. Jeśli naprawdę potrzebujesz więcej, wsparcie zwykle może to zwiększyć na żądanie, ale najpierw zapytają dlaczego, co jest właściwą reakcją.
Na shared hostingu z cPanel/Plesk (IONOS, All Inkl, Hostinger, DomainFactory, Strato)
cPanel i Plesk oba mają panel ustawień PHP, gdzie memory_limit może być ustawiony per domena. Wyszukaj "MultiPHP INI Editor" (cPanel) lub "Ustawienia PHP" (Plesk). Wybierz wartość, zapisz, gotowe. Niektóre hosty ukrywają ustawienie za submenu "Opcje PHP".
Jeśli panel jest niedostępny lub ustawienie nie ma efektu, umieść plik .user.ini w katalogu głównym WordPress z tą pojedynczą linią:
memory_limit = 256MMechanizm .user.ini jest wspierany przez każdą nowoczesną konfigurację PHP z CGI, FastCGI lub PHP FPM, co jest w zasadzie każdym hostem dzisiaj. PHP odbiera plik automatycznie; jedyną osobliwością jest domyślny czas cache wynoszący pięć minut, zanim zmiany wejdą w życie, po czym nowy limit obowiązuje przy następnym żądaniu.
Na samozarządzanym VPS lub serwerze dedykowanym
Edytuj php.ini bezpośrednio. Znajdź aktywny php.ini za pomocą php --ini w wierszu poleceń; ścieżka różni się w zależności od dystrybucji i wersji PHP. Wyszukaj linię memory_limit, zmień wartość, zapisz. Przeładuj PHP FPM za pomocą sudo systemctl reload php8.2-fpm (dostosuj numer wersji) lub zrestartuj Apache, jeśli używasz mod_php.
Tylko Apache: .htaccess (przestarzałe)
Na starszych konfiguracjach Apache z mod_php (rzadkie na nowoczesnym hostingu) php_value memory_limit 256M w .htaccess może działać. Jeśli Twój host uruchamia PHP przez FastCGI lub PHP FPM, ta dyrektywa jest po prostu ignorowana. Użyj zamiast tego .user.ini.
Jak zweryfikować, który limit jest faktycznie aktywny
Ustalenie, który z czterech limitów obowiązuje, zajmuje trzydzieści sekund:
- W panelu admina WordPress otwórz Narzędzia, Stan witryny, Info.
- Rozwiń sekcję Serwer. Zobaczysz aktywny PHP
memory_limit. - Rozwiń sekcję Stałe WordPress. Zobaczysz
WP_MEMORY_LIMITiWP_MAX_MEMORY_LIMIT, z ich obecnymi wartościami.
Jeśli stałe WordPress pokazują Twoje nowe wartości, ale PHP memory_limit nadal jest niższy, host ogranicza to na poziomie serwera. Porozmawiaj z wsparciem lub użyj panelu hostera z Opcji 2.
Dla precyzyjnej kontroli spoza panelu umieść ten tymczasowy plik w wp-content/mu-plugins/check-memory.php:
<?php
add_action('init', function () {
if (current_user_can('manage_options') && isset($_GET['check_memory'])) {
wp_die('PHP memory_limit: ' . ini_get('memory_limit'));
}
});Następnie otwórz https://twojadomena.pl/?check_memory=1, gdy jesteś zalogowany jako administrator. Strona pokazuje limit, który PHP faktycznie stosuje dla tego żądania. Usuń plik, gdy skończysz.
Co jeśli zwiększenie limitu nie rozwiązuje błędu?
Jeśli "Allowed memory size exhausted" utrzymuje się po zwiększeniu każdego limitu do rozsądnej wartości, problem nie jest już "WordPress potrzebuje więcej pamięci". Szukaj jednego z tych:
- Konkretna wtyczka jest winowajcą. Wyłącz wtyczki jedna po drugiej i przeładuj. Błąd wskazuje wtyczkę w ścieżce pliku:
/wp-content/plugins/PLUGINNAME/.... Ta wtyczka ma wyciek pamięci lub naprawdę robi coś intensywnego pamięciowo, co powinno być podzielone na mniejsze zadania. - Operacje masowe. Importowanie tysięcy produktów przez importer CSV WooCommerce, regenerowanie miniatur dla całej biblioteki media lub uruchamianie pełnego audytu SEO może osiągnąć każdy limit pamięci. Właściwą odpowiedzią jest zwykle przejście na WP CLI dla tych zadań. CLI ma osobny, zwykle znacznie wyższy limit pamięci i przetwarza zadania w partiach bez pełnego narzutu cyklu żądania WordPress.
- WP Cron zawiesza się na ciężkim zadaniu. Zadania w tle uruchamiane przez
wp-cron.phpdzielą ten sam limit pamięci, co normalne żądanie. Jeśli zaplanowane zadanie próbuje przetworzyć ogromną kolejkę jednocześnie, zawodzi wielokrotnie bez wyraźnego objawu frontendowego. Wyłączenie wewnętrznego WP Cron i uruchamianie go przez cron systemowy zwykle pomaga. - Object cache źle skonfigurowany. Zbyt mała instancja Redis lub Memcached w połączeniu z persystentnym object cache WordPress może powodować dziwną presję pamięci pod obciążeniem. Warto sprawdzić, jeśli używasz jednego z nich i problem występuje tylko pod ruchem.
Częste błędy, których należy unikać
- Ustawienie
WP_MEMORY_LIMITniżej niż domyślny PHP. Bezużyteczne. WordPress tylko podnosi limit, nigdy go nie obniża.define('WP_MEMORY_LIMIT', '32M')na hoście z PHP na 256M nic nie robi. - Ustawienie zarówno
WP_MEMORY_LIMIT, jak iWP_MAX_MEMORY_LIMITna tę samą wartość. Działa, ale rezygnujesz z możliwości dania adminowi więcej pamięci niż frontendowi, co jest całym sensem dwóch stałych. - Zapisanie wartości jako liczby.
define('WP_MEMORY_LIMIT', 256)ustawia limit na 256 bajtów, nie 256 megabajtów. Zawsze zapisuj z jednostką:'256M'. - Edycja niewłaściwego wp-config.php. Jeśli Twoja instalacja znajduje się w podkatalogu, zarówno katalog instalacji, jak i katalog nadrzędny mogą mieć
wp-config.php. Sprawdź z folderu WordPress w górę i edytuj ten, który WordPress faktycznie ładuje.
Dla zdecydowanej większości witryn dwie linie w wp-config.php plus rozsądny PHP memory_limit z panelu hostera rozwiązują błąd na stałe. Jeśli nie, problem nie jest pamięcią, a dalsze zwiększanie limitu tylko opóźni następne wyłączenie.