Generator php.ini
Bezpieczna konfiguracja PHP
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Maks. plik do wgrania
Mniejsza z wartości: upload_max_filesize i post_max_size
memory_limit
Dyrektywy
Linie
Rozmiar
php.ini
Po zmianie php.ini przeładuj PHP-FPM lub Apache, żeby ustawienia zaczęły działać.
| Dyrektywa | Co robi | Na co uważać |
|---|---|---|
| memory_limit | Maksymalna pamięć, jaką może zająć jeden skrypt PHP. | -1 wyłącza limit; na produkcji lepiej wpisać konkretną wartość. |
| max_execution_time | Maksymalny czas działania skryptu w sekundach. | 0 oznacza brak limitu. Serwer WWW lub proxy mogą przerwać żądanie wcześniej. |
| max_input_time | Czas na odebranie i przetworzenie danych wejściowych (POST, pliki). | Generator ustawia tyle samo co max_execution_time, jeśli pole zostawisz puste. |
| max_input_vars | Ile zmiennych (GET, POST, ciasteczka) PHP przyjmie w jednym żądaniu. | Nadmiarowe zmienne są pomijane. Dotyczy dużych formularzy i menu w CMS. |
| upload_max_filesize | Maksymalny rozmiar jednego wgrywanego pliku. | Realny limit to mniejsza z wartości: upload_max_filesize i post_max_size. |
| post_max_size | Maksymalny rozmiar całego żądania POST (wszystkie pola i pliki razem). | Ma być ≥ upload_max_filesize. 0 wyłącza limit. |
| display_errors | Pokazuje błędy PHP w odpowiedzi strony. | Na produkcji Off; błędy zapisuj do logu (log_errors). |
| date.timezone | Domyślna strefa czasowa funkcji daty i czasu. | Nazwa w formacie Kraj/Miasto, np. Europe/Warsaw. |
| opcache.* | Pamięć podręczna skompilowanego kodu PHP. | Przy validate_timestamps = 0 trzeba czyścić OPcache po każdym wdrożeniu. |
Jak liczymy limit wgrywania
Plik przejdzie, jeśli mieści się w obu limitach naraz. Dla Twoich ustawień: upload_max_filesize = 64M, post_max_size = 64M, czyli największy pojedynczy plik to 64 MB. Żądanie POST zawiera też inne pola formularza, więc zostaw trochę zapasu.
Gdzie wkleić ustawienia
Wskaż aktywny plik poleceniem php --ini albo przez phpinfo(). Na hostingu współdzielonym ustawienia często wpisuje się do .user.ini lub panelu. Dyrektywy opcache.* zwykle działają tylko w głównym php.ini.
Serwer WWW ma własny limit
Samo podniesienie upload_max_filesize bywa za mało: Nginx ma client_max_body_size, a Apache LimitRequestBody. Jeśli upload nadal się nie udaje, sprawdź też te ustawienia.
Typowe pułapki
post_max_size mniejsze od upload_max_filesize blokuje duże pliki bez czytelnego błędu. Wpisuj rozmiary z jednostką (64M, 1G), a nie w bajtach. Po edycji pliku przeładuj PHP-FPM lub Apache.
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator php.ini
Plik php.ini steruje działaniem środowiska PHP. Odpowiednie limity pamięci, czasu wykonania i uploadu są niezbędne dla stabilnej pracy aplikacji.
Najważniejsze ustawienia
| Opcja | Znaczenie |
|---|---|
| memory_limit | maksymalna pamięć na skrypt |
| upload_max_filesize | maksymalny rozmiar pojedynczego pliku |
| post_max_size | maksymalny rozmiar całego żądania POST |
| max_execution_time | maksymalny czas wykonania skryptu |
| max_input_vars | limit liczby pól formularza |
Wzajemne zależności
post_max_size musi być większe lub równe upload_max_filesize. Inaczej duże pliki zostaną odrzucone mimo podniesionego limitu uploadu. Pamięć (memory_limit) powinna być większa niż rozmiar przetwarzanego pliku.
Bezpieczeństwo
display_errorswyłącz na produkcji — komunikaty ujawniają ścieżki i konfigurację.- Ustaw
log_errors = Oni przeglądaj logi. - Nie ustawiaj absurdalnie wysokich limitów bez potrzeby.
Jak generator składa plik php.ini
Generator pobiera wartości wpisane w formularzu i zapisuje je jako pary dyrektywa = wartość, czyli dokładnie w formacie, jaki PHP czyta przy starcie procesu. Każda linia to jedna dyrektywa, a linie rozpoczynające się od średnika są komentarzami i PHP je pomija. Gotowy wynik wklejasz do pliku php.ini albo traktujesz jako listę wartości do wpisania w panelu hostingu.
Rozmiary w php.ini podaje się w notacji skróconej: liczba plus sufiks K, M lub G, gdzie 1K to 1024 bajty, a 1M to 1024K. Liczba bez sufiksu oznacza bajty, więc wpisanie samego „64” da limit 64 bajtów, a nie 64 megabajty — to najczęstsza pomyłka przy ręcznej edycji. Narzędzie pilnuje spójności formatu i sygnalizuje, gdy zależność między limitami jest niespełniona.
Drugi element mechanizmu to kolejność i nadpisywanie. PHP czyta najpierw główny plik konfiguracyjny, a potem pliki z katalogu wskazanego przez dyrektywę scan (typowo katalog dodatkowy). Jeśli ta sama dyrektywa pojawi się dwa razy, wygrywa ostatnie wystąpienie. Wygenerowany wpis zadziała więc tylko wtedy, gdy nie kłóci się z innym plikiem konfiguracyjnym obecnym na serwerze.
Przykład krok po kroku: wgrywanie plików do 128 MB
- Cel: chcesz przyjmować pliki o rozmiarze do 128 MB. W polu upload_max_filesize wpisujesz 128M.
- W polu post_max_size wpisujesz 132M, czyli wartość większą od limitu pojedynczego pliku. Żądanie POST to nie tylko sam plik — dochodzą nagłówki, granice multipart i pozostałe pola formularza.
- W polu memory_limit wpisujesz 256M. Skrypt, który wczytuje plik do pamięci, potrzebuje jej wyraźnie więcej niż sam plik zajmuje na dysku, bo dochodzą struktury tymczasowe i kopie danych.
- Ustawiasz max_execution_time na 300 (sekundy). Wgranie pliku przez wolne łącze i jego obróbka nie zmieszczą się w krótkim domyślnym czasie.
- Ustawiasz max_input_vars na 3000, jeśli formularz ma wiele pól. Przekroczenie tego limitu obcina dane wejściowe bez czytelnego komunikatu o błędzie.
- Na produkcji ustawiasz display_errors = Off oraz log_errors = On, kopiujesz wygenerowaną treść do pliku konfiguracyjnego i restartujesz PHP-FPM wraz z serwerem HTTP. Efekt sprawdzasz testowym wgraniem pliku o rozmiarze bliskim 128 MB.
Tabela referencyjna dyrektyw
| Dyrektywa | Jednostka i format | Rola oraz powiązania |
|---|---|---|
| memory_limit | rozmiar (K, M, G) | Górny limit pamięci na jeden skrypt. Powinien być wyraźnie większy niż rozmiar pliku przetwarzanego w całości w pamięci. |
| upload_max_filesize | rozmiar (K, M, G) | Limit pojedynczego pliku w żądaniu. Musi być mniejszy lub równy post_max_size. |
| post_max_size | rozmiar (K, M, G) | Limit całego żądania POST: pliki, pola formularza i narzut multipart razem. Nie może być mniejszy niż upload_max_filesize. |
| max_execution_time | sekundy (liczba całkowita) | Czas działania skryptu po stronie PHP. Nie obejmuje oczekiwania na dane przychodzące od klienta. |
| max_input_time | sekundy (liczba całkowita) | Czas na odczyt danych wejściowych. Działa równolegle z max_execution_time i razem z nim decyduje o przyjęciu dużego pliku. |
| max_input_vars | liczba całkowita | Limit liczby pól w jednym żądaniu. Przekroczenie powoduje ciche obcięcie danych, bez błędu po stronie użytkownika. |
| max_file_uploads | liczba całkowita | Ile plików może znaleźć się w jednym żądaniu — niezależnie od ich łącznego rozmiaru. |
| display_errors / log_errors | On lub Off | Sterują ujawnianiem i zapisem komunikatów. Na produkcji odpowiednio Off oraz On. |
Praktyczne wskazówki
- Podnoś limity parami. Zmiana upload_max_filesize bez podniesienia post_max_size nie da efektu — duże żądania zostaną odrzucone jeszcze przed zapisem pliku.
- Ustawiaj wartości osobno dla środowisk. Na komputerze deweloperskim wysokie limity skracają debugowanie, na produkcji warto trzymać je jak najniżej, ale powyżej realnych potrzeb aplikacji.
- Zostaw margines na narzut. post_max_size ustawiaj nieco powyżej planowanego rozmiaru pliku, bo żądanie zawiera też pola formularza i granice multipart.
- Sprawdź efekt po wdrożeniu. Po restarcie usług potwierdź wartości testowym wgraniem pliku i odczytem konfiguracji, zamiast zakładać, że plik został wczytany.
- Nie kopiuj cudzych konfiguracji. Wysokie limity przeniesione z innego projektu obciążają serwer i częściej prowadzą do wyczerpania zasobów niż do rozwiązania problemu.
Czego narzędzie nie uwzględnia
- Limitów serwera HTTP i pośredników. Jeśli serwer frontendowy, proxy albo zapora mają własny limit rozmiaru żądania, podniesienie wartości w php.ini nic nie da — plik zostanie odrzucony wcześniej.
- Wersji PHP i różnic między nimi. Część dyrektyw zmieniała znaczenie lub domyślne wartości między wersjami, a generator nie wie, na jakiej wersji uruchomisz wynik.
- Realnych ograniczeń pamięci maszyny. Wysoki memory_limit nie tworzy pamięci — jeśli procesów jest wiele, suma limitów może przekroczyć dostępne zasoby i skończyć się zabiciem procesu.
- Polityki hostingu. Na hostingu współdzielonym część ustawień jest blokowana po stronie panelu, a inne pliki konfiguracyjne mogą nadpisywać wygenerowane wartości bez ostrzeżenia.
Najczęstsze pytania
Gdzie znajduje się php.ini?
Lokalizację zdradzi php --ini lub funkcja phpinfo(). Często to /etc/php/8.x/fpm/php.ini.
Co to OPcache?
Bufor kodu PHP skracający czas wykonania. Znacznie przyspiesza aplikację, ale wymaga unieważniania cache przy wdrożeniach.
Jak wpłynąć na limity bez dostępu do php.ini?
Użyj pliku .user.ini lub dyrektyw php_value w .htaccess (dla mod_php).
Czy post_max_size musi być większe od upload_max_filesize?
Tak, powinno być większe lub co najmniej równe. post_max_size obejmuje całe żądanie POST, a upload_max_filesize tylko pojedynczy plik, więc przy równej wartości brakuje miejsca na resztę danych i duży upload zostanie odrzucony.
Dlaczego plik nie wgrywa się mimo podniesienia limitów w php.ini?
Najczęstsze przyczyny to limit rozmiaru żądania na serwerze frontendowym lub proxy, drugi plik konfiguracyjny nadpisujący twoje ustawienia albo brak restartu usługi obsługującej PHP. Warto też sprawdzić limit długości czasu odczytu danych wejściowych.
Czy zmiana php.ini wymaga restartu serwera?
Zmiany w pliku konfiguracyjnym nie działają na już uruchomionych procesach, dlatego trzeba przeładować usługę przetwarzającą PHP — zwykle PHP-FPM — oraz serwer HTTP. Dopiero nowe procesy odczytają nowe wartości.
Czy memory_limit powinien być większy niż rozmiar wgrywanego pliku?
Tak. Jeśli skrypt wczytuje plik do pamięci, obok samych danych powstają kopie i struktury tymczasowe, więc limit pamięci musi mieć zapas. Wartość równa rozmiarowi pliku to za mało i skończy się błędem braku pamięci.
Czy generator obsługuje wszystkie wersje PHP?
Generuje pary dyrektywa = wartość, a większość omawianych ustawień istnieje w PHP od lat. Niektóre dyrektywy zmieniły jednak znaczenie lub zostały wycofane, więc przed wdrożeniem warto potwierdzić ich działanie na docelowej wersji PHP.