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

⚡ W skrócie · 9 min czytania

-   Kluczowe dyrektywy php.ini: memory\_limit, max\_execution\_time, upload\_max\_filesize, OPcache, error\_reporting. Konfiguracja dla WordPress, WooCommerce i Laravel.
-   Gdzie znaleźć i edytować php.ini.
-   Kluczowe dyrektywy - limity zasobów.
-   Konfiguracja OPcache - przyspieszenie PHP.
-   Error reporting - dev vs produkcja.

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](https://www.lh.pl/?ref=helpguru#reklama) i [Zenbox](https://zenbox.pl/?p=2321#reklama) 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ą: 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 "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 "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 "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/)
-   [Nginx FastCGI Cache - konfiguracja, bypass i integracja z WordPress
    
    Nginx FastCGI Cache: fastcgi\_cache\_path, fastcgi\_cache\_key, bypass dla zalogowanych użytkowników i WooCommerce, Nginx…
    
    ](/baza-wiedzy/nginx-fastcgi-cache/)
-   [WordPress Multisite - konfiguracja sieci stron krok po kroku
    
    Jak skonfigurować WordPress Multisite na hostingu? wp-config.php, .htaccess, subdomeny vs subdirektoria, Super Admin,…
    
    ](/baza-wiedzy/wordpress-multisite-konfiguracja/)
-   [WooCommerce - optymalizacja wydajności na hostingu
    
    Jak zoptymalizować WooCommerce na hostingu? Wymagania RAM, PHP, MySQL. Cache LiteSpeed, kompresja obrazów WebP,…
    
    ](/baza-wiedzy/woocommerce-optymalizacja-hosting/)
-   [Jak wybrać hosting?](/jaki-hosting-wybrac/)

Autor: [Redakcja HostGrade.pl](/autorzy/) Zespół redakcyjny · Aktualizacja: 30 kwietnia 2026

Artykuły HostGrade.pl przygotowuje i aktualizuje redakcja serwisu. Ceny startowe, ceny odnowienia i warunki planów sprawdzamy w cennikach i regulaminach dostawców, a potem liczymy całkowity koszt za 2 lata (cena startowa plus odnowienia). Zasady zbierania danych i liczenia kosztów opisujemy na stronie Metodologia. Linki partnerskie oznaczamy jako #reklama.

[O redakcji i metodologii →](/autorzy/)