Limity PHP — memory_limit, upload_max_filesize, max_execution_time
Najważniejsze limity PHP dla aplikacji web. Jak zwiększyć, dla WordPress/sklepu. Co robić gdy 'Allowed memory size exhausted'.
Trzy najczęściej zmieniane parametry PHP. Domyślne wartości w IQHost wystarczają dla typowych stron, ale WordPress + WooCommerce, sklepy z dużymi importami, upload wideo wymagają wyższych.
Co zyskasz
- Ustawisz właściwe limity dla swojej aplikacji.
- Naprawisz „Allowed memory size of X bytes exhausted".
- Naprawisz „Maximum execution time exceeded".
- Skonfigurujesz upload dużych plików (wideo, PDF).
Wymagania wstępne
- Konto DA, domena.
Trzy najważniejsze limity
Wskazówka
Domyślne wartości w IQHost (mogą się różnić per pakiet):
Dyrektywa Default Max memory_limit256M 1024M (HS5+) upload_max_filesize100M 500M+ post_max_size100M 500M+ max_execution_time300s 600s+ max_input_vars5000 10000+
Krok 1: Otwórz Ustawienia PHP
Zarządzanie kontami → Ustawienia PHP lub Select PHP version → Options.
![]()
Krok 2: Zmień wartość
W tabeli znajdź dyrektywę (np.
memory_limit) → kliknij wartość → wpisz nową → Apply.Format: liczba + jednostka:
M= megabajt (1M = 1048576 bytes)G= gigabajt- Bez jednostki = bytes
memory_limit = 512M upload_max_filesize = 200M post_max_size = 256M max_execution_time = 600
memory_limit
Co to: Max RAM, którą skrypt może użyć.
Co się dzieje gdy za niski:
Fatal error: Allowed memory size of 134217728 bytes exhausted
Typowe wartości:
| Aplikacja | memory_limit |
|---|---|
| Statyczna strona | 64M |
| WordPress (blog) | 128-256M |
| WordPress + WooCommerce | 256-512M |
| Magento | 512-1024M |
| Big sklep z importami | 1024M+ |
| Migracja dużej bazy | 512M (tymczasowo) |
Wskazówka
Wyższy memory_limit nie zawsze pomaga. Często prawdziwy problem to memory leak w aplikacji (plugin, motyw). Sprawdź log, znajdź winowajcę.
upload_max_filesize + post_max_size
Co to: Max wielkość uploadu i całego POST request.
Co się dzieje gdy za niski:
PHP error: file exceeds upload_max_filesize
Lub w WordPress: „file is too large".
Reguła: post_max_size >= upload_max_filesize (zwykle 10-20% większe).
Typowe scenariusze:
| Co uploadujesz | upload_max | post_max |
|---|---|---|
| Logo, ikony | 5M | 8M |
| Zdjęcia produktów | 50M | 64M |
| Wideo na YouTube-like | 500M | 512M |
| PDF książkowe | 100M | 128M |
| Backupy bazy | 200M | 256M |
Wskazówka
Dla bardzo dużych uploadów (>500M) — lepiej FTP/SFTP zamiast przez przeglądarkę. Patrz FTP.
max_execution_time
Co to: Max czas (sekundy), który skrypt może działać.
Co się dzieje gdy za niski:
Fatal error: Maximum execution time of 30 seconds exceeded
Typowe wartości:
| Operacja | max_execution_time |
|---|---|
| Zwykła strona | 30-60 |
| WordPress admin | 300 |
| Import CSV / Excel | 600 |
| Generowanie PDF/report | 600 |
| Migracja, mass update | 1800 |
| Backup (przez panel) | 1800 |
Cron jobs mają osobny limit — nie podlegają max_execution_time. Patrz Zadania Cron.
max_input_vars
Co to: Max liczba zmiennych w POST/GET.
Kiedy problem: Strona ma duży formularz (CRM, e-commerce checkout z wieloma polami). WordPress menu z 50+ pozycjami.
Default: 5000. Zwiększ do 10000-20000 gdy widzisz dziwne błędy „zniknięte pola formularza" lub menu po zapisaniu.
Rekomendowane zestawy
Mały blog WordPress
memory_limit = 256M
upload_max_filesize = 50M
post_max_size = 64M
max_execution_time = 300
max_input_vars = 5000
WooCommerce sklep średni
memory_limit = 512M
upload_max_filesize = 100M
post_max_size = 128M
max_execution_time = 600
max_input_vars = 10000
Magento / duży sklep
memory_limit = 1024M
upload_max_filesize = 200M
post_max_size = 256M
max_execution_time = 1800
max_input_vars = 20000
Development / staging
memory_limit = 512M
display_errors = On
log_errors = On
error_reporting = E_ALL
Najczęstsze problemy
1. „Allowed memory size exhausted" — zwiększyłem, nadal błąd
Powody:
- Aplikacja sama nadpisuje (
ini_set('memory_limit', '128M')w kodzie) - WordPress
wp-config.phpmaWP_MEMORY_LIMIT:define('WP_MEMORY_LIMIT', '512M'); define('WP_MAX_MEMORY_LIMIT', '1024M'); - OPcache cachuje stare → restart PHP
2. „Maximum execution time exceeded" — operacja jest długa
Zwiększ max_execution_time → 600 albo 1800.
Albo lepiej: podziel operację na kawałki (batch processing, AJAX chunks).
3. „Upload się kończy o 50%"
upload_max_filesizelubpost_max_sizeza niski- LiteSpeed/Apache też ma limit (
LimitRequestBody) — admin tylko - Slow internet — uploads timeout
4. „Mam 1024M memory_limit, ale aplikacja nadal pada"
- Memory leak w pluginie/motywie
- Aplikacja po prostu wymaga więcej (ekstremalne — sklep z 100k produktów wymaga 2GB)
- Refactor kodu / optymalizacja zapytań DB
5. „Cron job timeout"
Cron ma własny limit — php_cli_max_execution_time (zwykle 0 = bez limitu) lub odpalenie z timeout w samym cronie.
Patrz Zadania Cron.
6. „WordPress 'memory size exhausted' nawet z 512M"
Zaktualizuj wp-config.php:
define('WP_MEMORY_LIMIT', '512M');
define('WP_MAX_MEMORY_LIMIT', '1024M');
Plus może problem z konkretnym pluginem — wyłącz po jednym i znajdź winnego.
7. „Wszystkie limity max, ale strona nadal wolna"
Problem nie w PHP limitach — w architekturze. Sprawdź:
- Bazę (slow queries — index)
- Cache (LiteSpeed Cache, Redis)
- CDN dla static files
- Optymalizacja obrazków (WebP, lazy load)
Słowniczek
- memory_limit — max RAM dla skryptu PHP.
- upload_max_filesize — max plik przez upload.
- post_max_size — max wielkość całego POST.
- max_execution_time — max czas wykonania (s).
- max_input_vars — max liczba zmiennych w request.
Related
Feedback
Czy ten artykuł pomógł?
