Jeśli prowadzisz stronę internetową opartą na PHP, jest spora szansa, że spotkasz się z komunikatem: Allowed memory size of X bytes exhausted. Niby techniczna drobnostka, a jednak potrafi zatrzymać całą witrynę. I tu nie chodzi tylko o przestarzały kod czy nieoptymalny szablon. Powodów może być wiele, ale łączy je jedno – PHP przestaje działać, ponieważ przekracza przydzieloną pamięć.
Limit pamięci PHP został przekroczony? Odezwij się, a wszystko naprawimy.
Zostaw nam swoje dane, a w ciągu 24 godzin skontaktujemy się z Tobą. A jeśli zależy Ci na czasie, po prostu zadzwoń do mnie. 🙂
Co to właściwie znaczy: „przekroczony limit pamięci PHP”?
PHP, jako język skryptowy, potrzebuje pamięci operacyjnej (RAM), by móc wykonywać polecenia. Każdy proces, każda funkcja, każda linijka kodu – wszystko to zabiera kawałek pamięci. Domyślnie PHP ma ustawiony maksymalny limit, często 128 MB lub 256 MB. Gdy jakiś skrypt przekroczy ten próg, serwer wyświetla komunikat o błędzie.
Nie ma tu miejsca na negocjacje. PHP działa w ramach przydzielonych zasobów i nie sięga po więcej, chyba że mu na to pozwolisz.
Dlaczego dochodzi do przekroczenia limitu pamięci PHP?
Powody mogą być następujące:
1. Wtyczki, moduły i rozszerzenia
W przypadku systemów typu WordPress to właśnie wtyczki są częstym winowajcą. Wiele z nich ładuje ogromne ilości kodu i danych do pamięci – niekoniecznie robiąc to w efektywny sposób. Dodatkowo, jeśli masz ich kilkanaście aktywnych, PHP dostaje niezły wycisk.

2. Nieoptymalny kod PHP
Źle napisane funkcje rekurencyjne (czyli te, które same się wywołują), zapętlone zapytania lub brak zwalniania pamięci po zakończonym zadaniu – to wszystko może prowadzić do przekroczenia limitu. Tu już wchodzimy na teren programistycznej higieny.
3. Przetwarzanie dużych plików lub baz danych
Import tysięcy rekordów, masowe operacje na obrazach, generowanie raportów PDF – wszystko to potrafi błyskawicznie pochłonąć przydzieloną pamięć. Czasem wystarczy jeden skrypt, żeby „położyć” cały proces.
4. Pamięć zjadana przez zewnętrzne biblioteki
Frameworki, biblioteki graficzne czy konwertery plików mają swoje potrzeby. Często „ukrywają” zużycie pamięci, ale PHP i tak musi je obsłużyć. Przykład? Obsługa plików XML lub generowanie miniaturek z PDF-ów.
5. Hosting z niskim limitem pamięci
Nie każdy serwer daje Ci dostęp do konfiguracji PHP. W środowiskach współdzielonych limity bywają bardzo konserwatywne – 64 MB czy nawet 32 MB. To może być poważnym ograniczeniem, nawet jeśli kod jest całkiem dobrze zoptymalizowany.
Podobne: Certyfikat SSL – co to jest i dlaczego jest tak ważny?
Jak sprawdzić, ile pamięci PHP zużywa Twoja strona?
Warto wiedzieć, że PHP umożliwia śledzenie zużycia pamięci w czasie rzeczywistym. Możesz dodać do skryptu następujący wiersz kodu:

To pozwala uzyskać liczbę bajtów aktualnie zużywanych przez PHP. Nieco bardziej rozbudowaną opcją jest:

Dzięki temu zobaczysz najwyższy poziom zużycia pamięci podczas działania całego skryptu. Świetne narzędzie do diagnozy, jeśli pracujesz nad bardziej złożonym systemem.
Przekroczenie limitu pamięci – statystyki i dane
Z danych opublikowanych przez W3Techs w 2024 roku wynika, że aż 77% stron internetowych działa na PHP. To oznacza miliony potencjalnych miejsc, gdzie ten problem może wystąpić. W środowiskach WordPressowych szacuje się, że nawet 40% awarii strony wiąże się bezpośrednio z błędami PHP, z czego spora część dotyczy właśnie limitów pamięci.
W praktyce administratorzy serwerów podnoszą limit pamięci średnio z 128 MB do 512 MB, co pokazuje skalę potrzeb nowoczesnych aplikacji webowych. W środowiskach e-commerce, zaleca się nawet 768 MB, a w niektórych przypadkach aż 1 GB – szczególnie przy dużych bazach produktów.
Jakie błędy może wyrzucić PHP przy przekroczeniu limitu?
Czasem nie zobaczysz nic poza białym ekranem. Innym razem pojawi się komunikat:

Oznacza to, że PHP wykorzystał już całość dostępnej pamięci (tu: 128 MB) i próbował przydzielić dodatkowe 64 KB. Skrypt się nie uruchomił, a Twoja strona najpewniej przestała działać.
Warto też pamiętać, że nie każdy błąd zostanie wyświetlony publicznie – w wielu konfiguracjach serwera komunikaty o błędach są wyłączone dla odwiedzających. W takim wypadku trzeba sprawdzić dzienniki błędów serwera (tzw. logi).
Jak rozwiązać problem przekroczenia limitu pamięci PHP?
Zanim przejdziemy do kodowania i ustawień, zatrzymaj się na moment. Pierwszy krok to diagnoza. Zanim podniesiesz limit pamięci „bo tak”, sprawdź, dlaczego został przekroczony. Być może wystarczy wyłączyć jedną wtyczkę, poprawić funkcję lub zoptymalizować zapytanie do bazy danych.
Jeśli mimo wszystko musisz zwiększyć limit, masz kilka opcji:
- dodanie linii do pliku php.ini – memory_limit = 512M;
- zmiana wartości w .htaccess – php_value memory_limit 512M;
- użycie polecenia w pliku wp-config.php (dla WordPressa) – define(‘WP_MEMORY_LIMIT’, ‘512M’);.
Pamiętaj – nie każdy hosting pozwoli Ci na te zmiany. W niektórych przypadkach konieczny będzie kontakt z administratorem serwera.
Kiedy samo zwiększenie limitu to za mało?
To ważne pytanie. Podnoszenie limitu to czasem leczenie objawu, a nie przyczyny. Jeśli skrypt wciąż pochłania gigabajty pamięci, problem leży gdzieś głębiej. Być może to źle zoptymalizowany import, być może zapętlony algorytm. Albo zwyczajnie – aplikacja przerosła możliwości obecnej infrastruktury.
Dobre praktyki kodowania – jak nie doprowadzić do przekroczenia limitu?
Nie zawsze masz wpływ na konfigurację serwera. Ale masz wpływ na to, jak działa Twoja aplikacja. Zdecydowanie częściej problem leży po stronie kodu niż limitu pamięci jako takiego. Dlatego zanim zdecydujesz się „dosypać pamięci”, sprawdź kilka istotnych kwestii.
Optymalizuj zapytania do bazy danych
To jeden z najczęstszych błędów. Pobieranie całej tabeli z tysiącami rekordów do tablicy w PHP to proszenie się o kłopoty. Używaj LIMIT, sortowania i paginacji. Pamiętaj, że każde zapytanie może być bardziej precyzyjne – nie musisz pobierać wszystkiego.
Unikaj zagnieżdżonych pętli i rekurencji
Rekurencja to narzędzie, które może być eleganckie… i bardzo niebezpieczne. Jeśli nie jest dobrze kontrolowana, potrafi błyskawicznie wyczerpać zasoby. Zawsze miej „zabezpieczenie” – limit głębokości, warunek stopu.
Zwolnij pamięć, gdy nie jest już potrzebna
To często pomijany aspekt. Masz dużą tablicę? Zniszcz ją, gdy skończysz pracę. Korzystaj z unset() dla zmiennych, które nie są już używane. Pamięć operacyjna nie jest „nieskończona”, nawet jeśli zwiększysz limit.
Testuj skrypty w środowisku deweloperskim
Zanim wrzucisz skrypt na produkcję, uruchom go lokalnie z pełnym logowaniem i śledzeniem pamięci. W tym celu możesz wykorzystać np. xdebug, który pokaże dokładnie, gdzie zużywana jest pamięć. W środowiskach testowych warto mieć limit ustawiony celowo niżej – żeby szybciej wychwycić problemy.
Kiedy zwiększenie limitu PHP jest uzasadnione?
Nie każdy przypadek to błąd w kodzie. Są sytuacje, w których aplikacja faktycznie potrzebuje więcej zasobów.
Przykłady:
- masowy import produktów do sklepu internetowego – np. 20 000 pozycji z pliku CSV;
- generowanie raportów PDF z dużą ilością danych;
- operacje na obrazach – skalowanie, przycinanie, kompresja;
- synchronizacja z systemem zewnętrznym (API), np. system ERP lub hurtownia danych.
W takich momentach podniesienie limitu pamięci z 256 MB do 512 MB albo nawet 1 GB nie jest fanaberią. To techniczna konieczność wynikająca z charakteru działania aplikacji. Ważne, żeby po zakończeniu operacji wrócić do rozsądnych wartości – ograniczenie zużycia pamięci to także kwestia bezpieczeństwa.
Narzędzia do monitorowania pamięci PHP
Jeśli zarządzasz większym projektem, ręczne sprawdzanie pamięci to za mało. Potrzebujesz narzędzi automatyzujących ten proces.
New Relic

Zaawansowane narzędzie do monitorowania działania aplikacji PHP. Pozwala śledzić czas działania skryptów, błędy, ale też zużycie pamięci. Z jego pomocą możesz zobaczyć, która część Twojej aplikacji „ciągnie” najwięcej zasobów.
Tideways

Mniej znane, ale bardzo skuteczne narzędzie dla środowisk PHP. Pozwala analizować, gdzie aplikacja spowalnia, które funkcje zużywają pamięć i jak zmienia się wydajność w czasie.
Xdebug

Rozszerzenie do PHP, które pozwala debugować kod i mierzyć zużycie zasobów. Przydatne w fazie testowania i programowania. Dzięki niemu dowiesz się, w której linii kodu Twoja aplikacja traci najwięcej.
Co jeszcze możesz zrobić?
W niektórych przypadkach problem z pamięcią nie wynika z PHP jako takiego, tylko z jego otoczenia. Warto więc spojrzeć szerzej.
Hosting i serwer
Jeśli korzystasz z hostingu współdzielonego, Twoje możliwości są mocno ograniczone. Czasem nawet 128 MB to maksimum, jakie możesz uzyskać. W takim przypadku warto rozważyć przejście na serwer VPS, gdzie masz pełną kontrolę nad konfiguracją PHP i serwera.
Aktualizacje PHP
Stare wersje PHP (np. 5.6 czy 7.0) nie tylko mają mniejszą wydajność, ale też gorzej zarządzają pamięcią. Wersje 8.0, 8.1 i 8.2 przynoszą wyraźne poprawki – nie tylko w szybkości działania, ale też w optymalizacji zarządzania zasobami. Jeśli jeszcze nie zaktualizowałeś środowiska – to dobry moment.
Kiedy pora wezwać programistę?
Nie każdy błąd związany z pamięcią da się rozwiązać samodzielnie. Jeśli problem się powtarza mimo zwiększenia limitu, jeśli nie masz dostępu do dzienników błędów albo widzisz białą stronę i nie wiesz, dlaczego – lepiej poprosić o pomoc.
Zawodowy programista sprawdzi kod, przeanalizuje działanie bazy danych, zoptymalizuje pętle i pamięć. Takie działania mogą uratować stronę, ale i Twoją reputację – szczególnie jeśli prowadzisz sklep internetowy lub platformę dla klientów.
Jeśli masz dodatkowe pytania, skontaktuj się z ekipą Zdobywcy Sieci już dziś!