Menu
Szybki wybór
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

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.