Zwiększenie limitu pamięci PHP, czyli memory_limit jest, zwykle potrzebne w wielu sytuacjach. Zwłaszcza gdy niektóre skrypty platformy PHP, informują, że potrzebują więcej pamięci, aby PHP działało wydajniej.

Po naszych testach na większości współdzielonych hostingach memory_limit ustawiony jest na 256MB.

Na szczęście jest to bardzo łatwe do zrobienia. W tym artykule dowiesz się, jak zwiększyć limit pamięci PHP na cztery różne sposoby.

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 nie działają poprawnie,
  • pojawia się komunikat o błędzie Fatal error: Allowed memory size of XXXXX bytes exhausted lub Fatal error: Out of memory,
  • strona nie ładuje się poprawnie,

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

Są dwa podstawowe sposoby na uzyskanie tej przydatnej informacji. Pierwszy to umieszczenie na serwerze pliku z rozszerzeniem .php i napisanie w nim kod:

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

Jaki jest dobry limit pamięci?

Ogólnie rzecz biorąc, 256 MB jest więcej niż wystarczające do prawidłowego działania dowolnego ogólnego skryptu PHP. Skrypty wymagające większej ilości pamięci to zazwyczaj skrypty o dużym obciążeniu (np. zapętlanie tablic, skanowanie danych, tworzenie kopii zapasowych) lub skrypty, których przetwarzanie zajmuje dużo czasu.

Ponadto źle napisane skrypty PHP będą zużywać więcej pamięci do przetworzenia (ponieważ są złe!). Jak opisano powyżej, złośliwe skrypty PHP będą również zajmować dużo pamięci na serwerze.

Tak więc pozostawienie zbyt wysokiej wartości nie jest dobre w większości przypadków, chyba że wykonujesz prace rozwojowe, które wymagają odblokowania wszystkiego w celu przetestowania możliwości skryptu, co jest w porządku.

Ponownie sugerujemy ustawienie 256 MB dla memory_limit, który wynosi 256 M, co będzie więcej niż wystarczające.

4 sposoby na zwiększenie memory_limit z 256M do 512M

1. Pierwszy sposób na zwiększenie memory_limit to zgłoszenie się do administratora hostingu o zwiększenie

Zwiększenie memory_limit w php.ini

    2. Drugim sposobem jest w systemach operacyjnych bazujących na Linuxie ustawienie w php.ini zlokalizowanego zazwyczaj w katalogu /etc/. Możesz go otworzyć używając dowolnego edytora tekstowego i w konfiguracji odnaleźć zapis memory_limit i zwiększyć go do poziomu 512MB wg poniższego schematu

    memory_limit = 512M

    Potem należy zrestartować usługi httpd i php-fpm.

    Aby mieć pewność że parametr został zmieniony należy zrestartować Apache albo Nginx używając polecenia

    // Restarting Apache (Redhat based OS)
    systemctl restart httpd
    
    // Restarting Apache (Debian based OS)
    systemctl restart apache2
    
    // Restarting Nginx
    systemctl restart nginx
    
    // Restarting PHP-FPM
    systemctl restart php-fpm

    W systemie Windows plik php.ini znajduje się w folderze PHP zależnie od tego jakich używasz aplikacji (XAMPP, Laragon itd.). W tym przypadku konieczne jest zrestartowanie usług.

    Zwiększenie momory_limit w .htaccess

    3. Trzecim sposobem jest umieszczenie w pliku .htaccess tego kodu:

    php_value memory_limit 512M

    Należy się upewnić, czy plik .htaccess znajduje się w katalogu root i tylko w nim dokonać powyższej zmiany. Pliki .htaccess mogą znajdować się również w innych lokalizacjach.

    W razie problemów powyższy kod należy zmodyfikować. Za X należy wstawić zainstalowaną wersję PHP, np. 8.1 zamieniamy X na 8.

    <IfModule mod_pxpX.c>
    php_value memory_limit 512M
    </IfModule>

    Ustawienia są dostępne po zapisaniu pliku.

    Zwiększenie memory_limit przez ini_set

    4. W pliku PHP w którym chcesz zwiększyć limit pamięci lub w pliku do którego jest w nim odniesienie dodaj na początku taką linie

    <?php
    @ini_set('memory_limit',256M)
    >

    Zapisz plik a zmian zaczną od razu działać. Zwiększenie pamięci dotyczy tylko tego pliku.