 Autor: [Adam Nadolny](/autorzy/adam-nadolny) Ekspert DevOps i infrastruktury · Zweryfikowano Kwiecień 2026

1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  php.ini — konfiguracja PHP

# php.ini — konfiguracja PHP na hostingu i VPS

Opublikowano: 9 kwietnia 2026 · Kategoria: Hosting, PHP

Plik `php.ini` to główny plik konfiguracyjny PHP — kontroluje limity pamięci, czasy wykonania, rozmiary uploadów, raportowanie błędów i cache kodu. Właściwa konfiguracja może kilkukrotnie przyspieszyć aplikację i wyeliminować tajemnicze błędy 500. Oto najważniejsze dyrektywy i jak je ustawiać na hostingu i VPS.

## Gdzie znaleźć i edytować php.ini

Lokalizacja php.ini zależy od środowiska:

-   **VPS / serwer dedykowany:** zazwyczaj `/etc/php/8.x/fpm/php.ini` (PHP-FPM) lub `/etc/php/8.x/cli/php.ini` (CLI). Sprawdź przez `php --ini`.
-   **Hosting współdzielony (cPanel):** MultiPHP INI Editor w panelu → wybierz domenę i edytuj dyrektywy.
-   **Hosting współdzielony (DirectAdmin):** panel PHP Configuration lub plik `.user.ini` w katalogu domeny.
-   **Plik .user.ini:** umieszczony w katalogu `public_html/`, obsługiwany przez PHP-FPM. Zmiany działają po upływie `user_ini.cache_ttl` (domyślnie 5 minut).

\# VPS: znajdź aktywny plik php.ini
php --ini | grep "Loaded Configuration"

# Sprawdź wersję PHP-FPM
php-fpm8.2 -i | grep "php.ini"

# Edytuj i przeładuj
sudo nano /etc/php/8.2/fpm/php.ini
sudo systemctl reload php8.2-fpm

## Kluczowe dyrektywy — limity zasobów

; === LIMITY PAMIĘCI I CZASU ===

; Maksymalna pamięć na jedno żądanie PHP
memory\_limit = 256M        ; WordPress basic: 128M, WooCommerce: 256-512M

; Maks. czas wykonania skryptu (sekundy)
max\_execution\_time = 60    ; import CSV/XML: 300+, WP-Cron: 120

; Maks. czas oczekiwania na dane wejściowe (upload)
max\_input\_time = 60

; Maks. liczba zmiennych POST/GET (np. duże formularze)
max\_input\_vars = 3000      ; Domyślnie 1000 — za mało dla Elementora/ACF

; === UPLOAD PLIKÓW ===

; Maks. rozmiar pojedynczego przesyłanego pliku
upload\_max\_filesize = 64M  ; WordPress media: 32-64M

; Maks. rozmiar całego żądania POST (musi być >= upload\_max\_filesize)
post\_max\_size = 64M        ; Ustaw identycznie lub wyżej

; Maks. liczba plików w jednym żądaniu
max\_file\_uploads = 20

## Konfiguracja OPcache — przyspieszenie PHP

OPcache kompiluje pliki PHP do kodu pośredniego i przechowuje w pamięci — eliminuje powtórną kompilację przy każdym żądaniu. To **najważniejsza optymalizacja PHP**, dająca 2–5× przyspieszenie bez żadnych zmian w kodzie aplikacji.

; === OPCACHE (php.ini lub /etc/php/8.x/fpm/conf.d/10-opcache.ini) ===

opcache.enable = 1
opcache.enable\_cli = 0          ; Włącz na 1 tylko dla CLI scriptsów

; Pamięć na skompilowany kod (MB)
opcache.memory\_consumption = 128   ; Dla WordPress: 128MB, duże projekty: 256MB

; Pamięć na internowane stringi
opcache.interned\_strings\_buffer = 16

; Maks. liczba plików w cache
opcache.max\_accelerated\_files = 10000  ; Liczba plików PHP w projekcie \* 1.5

; Jak często sprawdzać zmiany plików (sekundy), 0 = zawsze (dev)
opcache.revalidate\_freq = 60    ; Produkcja: 60-3600

; Walidacja timestampów plików (wyłącz na prod dla max wydajności)
opcache.validate\_timestamps = 1

; JIT (PHP 8.0+) — dodatkowe przyspieszenie dla CPU-intensive code
opcache.jit\_buffer\_size = 64M
opcache.jit = tracing

\# Sprawdź status OPcache
php -r "var\_dump(opcache\_get\_status());"

# Wyczyść cache (np. po deployu)
php -r "opcache\_reset();"

## Error reporting — dev vs produkcja

Błędna konfiguracja error reportingu to jedno z najczęstszych zagrożeń bezpieczeństwa — wyświetlanie błędów PHP na produkcji ujawnia ścieżki plików, strukturę bazy danych i wersje bibliotek.

; === ŚRODOWISKO DEVELOPERSKIE ===
error\_reporting = E\_ALL
display\_errors = On
display\_startup\_errors = On
log\_errors = On
error\_log = /var/log/php/php\_errors.log

; === ŚRODOWISKO PRODUKCYJNE ===
error\_reporting = E\_ALL & ~E\_DEPRECATED & ~E\_STRICT
display\_errors = Off          ; NIGDY nie pokazuj błędów użytkownikowi
display\_startup\_errors = Off
log\_errors = On               ; Loguj błędy do pliku
error\_log = /var/log/php/php\_errors.log

## Sesje, timezone i inne ważne dyrektywy

; === STREFA CZASOWA ===
; Bez tego daty PHP mogą być błędne (UTC vs Europa/Warszawa)
date.timezone = "Europe/Warsaw"

; === SESJE ===
; Jak długo (sekundy) nieaktywna sesja jest przechowywana (domyślnie 1440 = 24 min)
session.gc\_maxlifetime = 3600   ; 1 godzina — dla e-commerce/paneli admina

; Czas życia ciasteczka sesji (0 = do zamknięcia przeglądarki)
session.cookie\_lifetime = 0

; Bezpieczeństwo sesji
session.cookie\_httponly = 1     ; Blokuje dostęp JS do ciasteczka sesji
session.cookie\_secure = 1       ; Tylko HTTPS (włącz gdy masz SSL)
session.use\_strict\_mode = 1     ; Odrzuca niezainicjowane ID sesji

; === INNE ===
; Wyłącz expose\_php — nie ujawniaj wersji PHP w nagłówkach HTTP
expose\_php = Off

; Rozmiar realpath cache (przyspiesza operacje na plikach)
realpath\_cache\_size = 4096k
realpath\_cache\_ttl = 600

## Konfiguracja pod WordPress i WooCommerce

Dyrektywa

WordPress

WooCommerce

Laravel

`memory_limit`

128–256 MB

256–512 MB

128 MB

`max_execution_time`

60 s

120–300 s

30–60 s

`upload_max_filesize`

32–64 MB

64 MB

10–64 MB

`max_input_vars`

3000

5000

1000

`opcache.memory_consumption`

128 MB

256 MB

128 MB

Dla WordPressa możesz część limitów ustawić w `wp-config.php` bez dostępu do php.ini:

// wp-config.php
define( 'WP\_MEMORY\_LIMIT', '256M' );
define( 'WP\_MAX\_MEMORY\_LIMIT', '512M' );  // Dla obszaru admin

// Alternatywnie przez ini\_set() (działa tylko dla PHP\_INI\_ALL dyrektyw)
@ini\_set( 'upload\_max\_size', '64M' );
@ini\_set( 'post\_max\_size', '64M' );
@ini\_set( 'max\_execution\_time', '300' );

## Sprawdzanie aktywnych ustawień — phpinfo()

Najszybszy sposób weryfikacji konfiguracji PHP to plik `phpinfo.php`:

<?php
// Utwórz plik phpinfo.php tymczasowo w public\_html/
// USUŃ po weryfikacji — wystawia konfigurację serwera!
phpinfo();
?>

Kluczowe sekcje phpinfo(): **Loaded Configuration File** (ścieżka do php.ini), **Additional .ini files parsed** (pliki .user.ini), kolumna **Local Value** vs **Master Value** (lokalne nadpisania vs wartości globalne).

## Najczęstsze pytania

Gdzie znaleźć plik php.ini na hostingu współdzielonym? +

Na hostingu współdzielonym php.ini zwykle nie jest dostępny do edycji bezpośredniej. Możesz nadpisać dyrektywy przez: (1) plik .user.ini w katalogu aplikacji (obsługiwany przez PHP-FPM), (2) plik php.ini w katalogu głównym domeny (niektóre panele), (3) panel DirectAdmin lub cPanel → PHP Configuration, (4) polecenie ini\_set() w kodzie PHP (tylko dla dyrektyw PHP\_INI\_ALL). Sprawdź dokumentację swojego hostingu — LH.pl i Zenbox oferują edycję php.ini przez panel.

Jaka wartość memory\_limit jest zalecana dla WordPressa? +

Minimalne wymagania WordPressa to 64 MB, ale w praktyce zaleca się 128 MB dla podstawowej instalacji. Przy zainstalowanych wtyczkach WooCommerce, Elementor lub WPML potrzeba 256–512 MB. W wp-config.php możesz ustawić define("WP\_MEMORY\_LIMIT", "256M") i define("WP\_MAX\_MEMORY\_LIMIT", "512M") — ta druga wartość dotyczy zasobów adminowych. Pamiętaj że memory\_limit w php.ini musi być >= WP\_MAX\_MEMORY\_LIMIT.

Jak sprawdzić aktywne ustawienia PHP bez dostępu do serwera? +

Stwórz plik phpinfo.php z jedną linią: <?php phpinfo(); ?> i otwórz go przez przeglądarkę. Zobaczysz wszystkie aktywne dyrektywy PHP, w tym które php.ini jest wczytywane (wiersz "Loaded Configuration File") i czy dyrektywy z .user.ini są aktywne (wiersz "Additional .ini files parsed"). Po sprawdzeniu usuń plik — wystawia wrażliwe informacje o konfiguracji serwera.

Czy OPcache spowalnia PHP w trybie developerskim? +

Na produkcji OPcache znacząco przyspiesza PHP (brak ponownej kompilacji plików przy każdym żądaniu). Na developerskim środowisku może utrudniać pracę — zmodyfikowany plik PHP nie jest od razu ładowany, bo cache ma starą wersję. Rozwiązanie: ustaw opcache.revalidate\_freq=0 i opcache.validate\_timestamps=1 na dev, natomiast na produkcji opcache.revalidate\_freq=60 lub wyżej (lub wyłącz validate\_timestamps dla maksymalnej wydajności).

## Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.

LH.pl

Hosting z edytowalnym php.ini przez panel i PHP 8.3 w standardzie

PHP 8.3

[Aktywuj rabat →](/out/lh-pl)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/lh-pl)

Zenbox

Zarządzanie wersjami PHP i ustawieniami php.ini przez panel klienta

Multi-PHP

[Aktywuj rabat →](/out/zenbox)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/zenbox)

Contabo

VPS z pełnym dostępem do php.ini i PHP-FPM — pełna kontrola konfiguracji

Pełna kontrola

[Aktywuj rabat →](/out/contabo)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/contabo)

## Powiązane strony

-   [PHP-FPM — konfiguracja i optymalizacja](/baza-wiedzy/php-fpm-konfiguracja-optymalizacja)
-   [Nginx VHost — konfiguracja wirtualnych hostów](/baza-wiedzy/nginx-vhost-konfiguracja)
-   [MySQL — optymalizacja i konfiguracja my.cnf](/baza-wiedzy/mysql-optymalizacja-konfiguracja)
-   [Wszystkie artykuły](/baza-wiedzy/)