🍪 Można ciasteczko?

Ta strona chce wykorzystywać pliki cookie do analizowania ruchu oraz mierzenia skuteczności i personalizacji reklam zgodnie z polityką prywatności. Zgadzasz się?

PORADNIKI

9 min. czytania

Jak zwiększyć limit pamięci PHP (memory_limit) na hostingu?

Ustawienia

Fot. Storyset

Czym jest memory_limit PHP na serwerze? Przyczyny wyczerpania. Jaki powinien być? Jak sprawdzić i zwiększyć limit pamięci PHP na hostingu?

Spis treści
Serwer

W jaki sposób zwiększyć limit pamięci PHP (tzw. memory_limit PHP)? To przydatna umiejętność, dzięki której możesz przywrócić swoją stronę do działania. Poznaj zalecane limity i metody, których należy użyć, by skutecznie i szybko przeprowadzić tę operację.

Zwiększenie memory_limit PHP, czyli limitu pamięci PHP, bywa najlepszym rozwiązaniem w wielu sytuacjach. Często jest to podstawowe działanie, które musi podjąć właściciel witryny, by zapewnić do niej dostęp swoim odbiorcom. Warto więc wiedzieć, jak taką operację skutecznie i szybko przeprowadzić, nie wywołując jednocześnie do nowych problemów.

Najczęściej memory_limit kojarzony jest z działaniem stron internetowych. Ze względu na język PHP wiązany jest z działaniem większości wtyczek w WordPressie. W praktyce jednak może wpływać na wszelkie skrypty umieszczone na Twoim serwerze. Jego nieodpowiednia wartość skutkować może rozmaitymi problemami, z którymi jednak stosunkowo łatwo się uporasz. W tym artykule szczegółowo wyjaśniliśmy, w jaki sposób możesz zrobić to szybko i skutecznie.

Czym jest limit pamięci PHP (memory_limit)?

Limit pamięci PHP to parametr określający maksymalną ilość pamięci, z której skorzystać może każdy dowolny skrypt z Twojego serwera. W zależności od Twojej działalności może być tu mowa o rozmaitych rozwiązaniach. Tzw. memory_limit PHP najczęściej natomiast kojarzony jest ze skryptami uruchamianymi w ramach funkcjonowania stron internetowych.

Aby dobrze zrozumieć to pojęcie, warto podkreślić, że każdy serwer ma ograniczone zasoby (zob. Limity na hostingu: poznaj 21 limitów hostingów współdzielonych). Jednym z najbardziej istotnych z nich jest pamięć RAM. Gdy jej zabraknie, witryna może przestać się ładować zupełnie lub będzie robić to niezwykle powoli. To natomiast w oczywisty sposób wpłynie negatywnie na działalność Twojego internetowego biznesu. Jeśli Twoje miejsce w sieci będzie zawierać aplikacje, wtyczki czy rozwiązania zużywające zbyt wiele pamięci, serwer będzie zbytnio przeciążony.

Rolą memory_limit PHP jest ochrona serwera przed tak niebezpieczną sytuacją. Zdefiniowany limit ma za zadanie powstrzymać uruchomione rozwiązania przed zużywaniem większej ilości pamięci, niż jest to możliwe lub dozwolone. W ten sposób chroni serwer przed przeciążeniem, całkowitym zawieszeniem lub zużyciem wszystkich przydzielonych zasobów.

W jakich sytuacjach warto zwiększyć limit pamięci PHP?

Sprawdzenie limitu pamięci PHP to jedna z podstawowych czynności, którą w przypadku kłopotów ze stroną powinien zrobić jej właściciel czy administrator. Bardzo często „wyczerpanie” ustawionych środków skutkuje nieprawidłowym działaniem witryny. Objawiać się to może np. białym ekranem, wyświetlającym się zamiast pożądanego miejsca w sieci. Pojawić się może wtedy charakterystyczny komunikat o błędzie PHP, który zablokuje całkowicie dostęp do serwisu.

Oprócz powyższego przykładu często zwiększenie memory_limit PHP jest konieczne, gdy:

  • wtyczki WordPress nie działają poprawnie,
  • pojawia się komunikat o błędzie, którego treść nawiązuje do wyczerpania limitu pamięci,
  • strona nie ładuje się poprawnie,
  • WordPress sam wyświetla Ci komunikaty o konieczności zwiększenia limitu pamięci PHP.

Przyczyny wyczerpania limitu pamięci PHP

Dlaczego dochodzi do błędów związanych z limitem pamięci PHP? Przyczyny takich sytuacji bywają niezwykle różnorodne. Porównać je można do wyżej wymienionych zdarzeń, sugerujących pojawienie się problemu. Najogólniej natomiast można powiedzieć, że dzieje się to, gdy wykorzystywane przez Ciebie rozwiązania zużywają więcej pamięci, niż pozwalają na to aktualne limity.

W praktyce najczęstszymi winowajcami takich sytuacji są wtyczki WordPress. Może to natomiast wynikać z różnych zależności, np.:

  • zainstalowania zbyt dużej liczby pluginów,
  • korzystania ze zbyt zaawansowanych pluginów w stosunku do ustawionego limitu,
  • nieoptymalnie zbudowanego pluginu,
  • źle skonfigurowanego pluginu.

Warto spróbować samodzielnie zdiagnozować, czy sprawcą kłopotów jest wtyczka WordPress. Aby to zrobić, wystarczy tylko wyłączać pluginy po kolei i obserwować, czy problem znika. Gdy już namierzysz oprogramowanie, które nie działa prawidłowo, możesz sprawdzić jego dokumentację. Powinna znajdować się w niej informacja, ile danych pamięci potrzebuje do prawidłowego działania.

Alternatywnie – zamiast szukać konkretnego źródła kłopotu – spróbuj uniwersalnego rozwiązania. Przejdź od razu do metody zwiększania limitu pamięci PHP. O ile nie jest on aktualnie zbyt wysoki, to bardzo możliwe, że po jego podniesieniu problem ustąpi. Możesz zrobić to błyskawicznie na kilka sposobów. Dzięki temu pozbędziesz się problemu na dłuższy czas.

Przykłady komunikatów (błędów) związanych z przekroczeniem limitu pamięci PHP

Przekroczenie memory_limit PHP może wywołać różne, niepożądane zdarzenia na stronie. Wiąże się to z wyświetlaniem niepokojących komunikatów, opisujących zdarzenie, do którego doszło. Zależnie od szczegółów i charakterystyki problemu, mogą one przyjmować różne formy. Najczęściej natomiast wyglądają one podobnie do:

Fatal error: Allowed memory size of x bytes exhausted (tried to allocate x bytes) in /path/to/php/script

albo

PHP Fatal error: Out of memory (allocated x) (tried to allocate x bytes) in /path/to/php/script.

Jaki powinien być limit pamięci PHP (memory limit)?

Nie ma jednej, uniwersalnej odpowiedzi na pytanie, jaki powinien być memory_limit PHP. Wszystko zależy od Ciebie, Twoich potrzeb i miejsca w sieci, którym zarządzasz. Podstawowa strona, służąca za portfolio, potrzebuje znacznie mniej pamięci niż serwis odwiedzany przez tysiące użytkowników. Nieskomplikowana wizytówka również nie ma limitu porównywalnego do rozbudowanego serwisu, w którym zastosowano wiele nowoczesnych rozwiązań.

Warto ustawić limit pamięci PHP na najniższym możliwym poziomie, pozwalającym jednak na bezproblemowe działanie Twojej witryny. W praktyce więc warto wypróbować kilka rozwiązań i zobaczyć, jak nisko można zejść, by nie wyrządzić szkód na stronie internetowej.

Przyjmuje się, że minimalną wartością memory_limit PHP na nieskomplikowanej stronie jest 128 MB. Zalecamy więc rozpocząć „testowanie” optymalnego limitu w tym miejscu. Jest to ilość pamięci pozwalająca na obsługę nawet dość skomplikowanych i wymagających wtyczek, pod warunkiem, ze zostały dobrze napisane. Jeśli jednak zobaczysz, że Twój serwis w tej konfiguracji nie działa prawidłowo, zmień memory_limit na 256 MB. To wariant przeznaczony dla bardziej rozbudowanych serwisów, stosujących zaawansowane rozwiązania technologiczne.

Trzecim i maksymalnym, zalecanym wyjściem, jest ustawienie 512 MB. Jest to jednak wartość wykorzystywana w sytuacjach raczej rzadkich. W zdecydowanej większości stron WWW wystarczająca jest druga z wymienionych przez nas opcji. Teoretycznie da się ustawić jeszcze wyższą wartość. Maksymalny limit pamięci jest bowiem ustalany przez hostingodawcę, z którego usług korzystasz. Warto natomiast podejść do tej kwestii rozsądnie, dostosowując limit do swoich potrzeb. Jeśli będzie on za wysoki, wtyczki mogą nie działać optymalnie. Zaczną zużywać zbyt wiele pamięci, szkodząc stronie WWW.

Moim zdaniem minimum oferowane przez hosting to 1024 MB (1 GB) pamięci RAM na konto (całościowo) i 512 MB na 1 proces (memory_limit). Pamiętaj jednak, że nawet, gdy hosting spełnia to minimum, to nie zawsze warto „maksować” wartości limitu w ustawieniach. Często jedna strona WWW to wiele jednoczesnych procesów.

W jaki sposób sprawdzić limit pamięci PHP?

Wiesz już, co wskazuje na problemy z limitem pamięci PHP oraz znasz jego zalecane wartości. Czas więc przejść do sposoby na sprawdzenie jego obecnej konfiguracji, która ma bezpośredni wpływ na działanie Twojej strony. Na podstawie tej informacji będzie możliwe podjęcie decyzji o ewentualnym wprowadzeniu niezbędnych zmian. Są dwa podstawowe sposoby na uzyskanie tej przydatnej informacji. Poniżej wyjaśniliśmy je krok po kroku.

Stworzenie pliku PHP

Łatwą metodą na sprawdzenie memory_limit PHP jest stworzenie pliku .php i umieszczenie w nim wiesza:

<?php echo ini_get('memory_limit') ?>;

Następnie zapisz plik i umieść go na serwerze. Uruchom go, np. wywołując go z poziomu przeglądarki. W ten sposób sprawdzisz wartość, na której Ci zależy w dowolnym momencie.

Sprawdzenie memory_limit PHP z poziomu kokpitu WordPress

Łatwym sposobem jest sprawdzenie memory_limit PHP z poziomu panelu administracyjnego WordPress. Zaloguj się do niego, korzystając z danych udostępnionych Ci przez hostingodawcę. Następnie przejdź do zakładki „Narzędzia” i wybierz w niej opcję „Stan witryny”. W tym miejscu znajduje się szereg informacji dotyczących Twojej strony internetowej, serwera, konfiguracji i innych.

Przejdź do zakładki „Informacja” i rozwiń sekcję „Stałe WordPressa”. Tam właśnie znajdziesz informację „WP memory_limit„.

Alternatywne metody sprawdzenia limitu pamięci PHP

Oprócz dwóch głównych sposobów, opisanych powyżej, skorzystać też możesz z szeregu rozwiązań alternatywnych. Mowa tu o:

  • sprawdzeniu limitu pamięci PHP w phpinfo();
  • sprawdzenie PHP memory_limit w pliku php.ini;
  • wykorzystaniu do tego SSH – wpisując polecenie: php -r "echo ini_get('memory_limit');"

Jak zmienić wartość limitu pamięci PHP (memory_limit)?

Po sprawdzeniu aktualnego memory_limit PHP możesz chcieć wprowadzić zmiany tego parametru. Oczywiście masz taką możliwość, choć musisz działać w ramach limitu oferowanego Ci przez pakiet hostingowy, który opłacasz. Niemniej, do Twojej dyspozycji jest pięć głównych opcji:

  1. zmiana wartości memory_limit PHP poprzez edycję pliku php.ini,
  2. zmiana wartości memory_limit PHP poprzez edycję pliku .htaccess,
  3. zmiana wartości memory_limit PHP w panelu (na przykładzie cPanel),
  4. zmiana wartości memory_limit PHP poprzez dodanie wpisu w skrypcie PHP,
  5. zmiana wartości memory_limit PHP w WordPressie.

Żadne z tych rozwiązań nie należy do specjalnie skomplikowanych. Poniżej szczegółowo je omówiliśmy. Postępuj zgodnie z naszymi instrukcjami, a cały proces nie powinien zająć więcej niż kilka minut.

Zmiana wartości memory_limit PHP poprzez edycję pliku php.ini

Wcześniej wspominaliśmy, że wartość memory_limit PHP możesz zobaczyć w pliku php.ini. Jego edycja pozwala na zmianę tego parametru. Jak edytować plik PHP.ini? Działa to dokładnie tak samo, jak w przypadku każdego innego pliku tekstowego znajdującego się na dysku. Możesz zrobić to z poziomu panelu cPanel, DirectAdmin lub poprzez połączenie FTP, SFTP lub FTPs.

Po nawiązaniu kontaktu z serwerem i znalezieniu php.ini otwórz go i rozpocznij edycję. Wprowadź limit pamięci PHP, który uznajesz za odpowiedni w Twojej sytuacji, np.:

memory_limit = 512M

Następnie zapisz plik i umieść z powrotem na dysku. Jeśli edycja odbywa się online, to po prostu zapisz wprowadzone zmiany.

Zmiana wartości memory_limit PHP poprzez edycję pliku .htaccess

Jeśli nie masz dostępu do pliku php.ini, możesz edytować .htaccess. Znajdziesz go w głównym katalogu swojej strony internetowej. Wszystko, co musisz zrobić w tym przypadku, to dodać na samym końcu jedną linijkę. Określ w niej memory_limit PHP, który Ci odpowiada:

php_value memory_limit 512M

Zmiana wartości memory_limit PHP w panelu (na przykładzie cPanel)

Jeśli Twój hostingodawca zapewnił Ci dostęp do cPanel, to zaloguj się do swojego konta klienta. Login i hasło powinny zostać Ci wysłane podczas wykupowania miejsca na serwerze. My posłużymy się otwartą wersją demo tego rozwiązania, dostępną na oficjalnej stronie usługi.

Po zalogowaniu przejdź do sekcji związanej z konfiguracją oprogramowania. Zależnie od hostingodawcy, wygląd i nazewnictwo panelu może się nieco różnić w poszczególnych przypadkach. U nas zakładka ta nazwana została po prostu „Software„.

Znajdziesz tam segment „MultiPHP” lub podobny. Przejdź do niego, a na ekranie zobaczysz wiele ustawień PHP, które możesz edytować. Znajduje się tu m.in. informacja o wersji PHP i opcja zmiany wersji PHP. W tym miejscu znajdziesz też parametr „memory_limit”. Jeśli chcesz, możesz go zmienić. Wystarczy tylko, że wprowadzisz pożądaną wartość i zapiszesz zmiany. Praktycznie identycznie proces ten wygląda w przypadku DirectAdmin.

Zmiana wartości memory_limit PHP poprzez dodanie wpisu w skrypcie PHP

Limit pamięci możesz zmienić za pomocą dodania odpowiedniego wpisu bezpośrednio w skrypcie PHP. Pozwoli Ci na to linijka:

ini_set('memory_limit', '512');

Zmiana wartości memory_limit PHP w WordPressie

Ostatnim sposobem na zmianę limitu pamięci PHP w przypadku serwisów opartych na WordPressie jest edycja pliku wp-config.php. Znajdziesz go w głównym katalogu WP na swoim serwerze (zob. struktura folderów na hostingu). Jeśli chcesz wprowadzić zmiany, na samym końcu musisz dodać linijkę zaznaczającą limit, który uważasz za stosowny:

define('WP_MEMORY_LIMIT', '512');

Pamiętaj jednak, aby znalazł się on jeszcze przed komentarzem “..Miłego blogowania!”.