Funkcja phpinfo() – jak sprawdzić konfigurację serwera PHP?

cpp-polska.pl 3 tygodni temu
Zdjęcie: blue elephant plush toy on black laptop computer


Funkcja phpinfo() w PHP to potężne narzędzie diagnostyczne, które wyświetla kompleksowy raport o konfiguracji serwera, wersji PHP, załadowanych rozszerzeniach, zmiennych środowiskowych i wielu innych parametrach.

Jest niezbędna do debugowania, weryfikacji wymagań aplikacji oraz optymalizacji środowiska hostingowego.

Czym dokładnie jest phpinfo() i jak działa?

phpinfo() to wbudowana funkcja PHP, która generuje szczegółowy raport w HTML o całym środowisku wykonawczym. Po jej wywołaniu dane są prezentowane w sekcjach obejmujących m.in.:

  • wersję PHP i informacje o kompilacji – dokładną wersję interpretera (np. PHP 8.3.x), opcje i datę kompilacji, informacje o systemie operacyjnym;
  • ustawienia konfiguracyjne – wartości dyrektyw z pliku php.ini, w tym limity jak memory_limit, post_max_size, max_input_time, max_input_vars;
  • załadowane rozszerzenia i moduły – listę aktywnych modułów (np. GD, PDO, cURL, mbstring) wraz z wersjami i ustawieniami;
  • zmienne środowiskowe i serwera – dane EGPCS (Environment, GET, POST, Cookie, Server), nagłówki HTTP, ścieżki systemowe, zmienne jak $_SERVER;
  • inne sekcje – informacje o serwerze WWW (Apache, Nginx), licencji PHP oraz lokalnych i globalnych wartościach dyrektyw.

Każdy serwer ma unikalną konfigurację – phpinfo() w kilka sekund pokazuje dostępne zmienne i ustawienia dla aktualnego środowiska.

Składnia i parametry funkcji phpinfo()

Podstawowa składnia to proste wywołanie funkcji, które domyślnie wyświetla wszystkie informacje:

phpinfo();

Funkcja akceptuje opcjonalny parametr int $flags, który filtruje dane dzięki bitowych stałych (można je łączyć operatorem |). Oto pełna lista dostępnych flag:

Stała Wartość Opis
INFO_GENERAL 1 Konfiguracja php.ini, lokalizacje, data wersji, serwer, system.
INFO_CREDITS 2 Lista autorów PHP.
INFO_CONFIGURATION 4 Lokalne i główne wartości dyrektyw PHP.
INFO_MODULES 8 Załadowane moduły i ich ustawienia.
INFO_ENVIRONMENT 16 Zmienne środowiskowe ($HTTP_ENV_VARS).
INFO_VARIABLES 32 Zmienne EGPCS (Environment, GET, POST, Cookie, Server).
INFO_LICENSE 64 Licencja PHP.
INFO_ALL -1 Wszystkie powyższe (domyślnie).

Na przykład, aby wyświetlić tylko moduły lub połączyć kilka sekcji, użyj następujących wywołań:

<?php
// Wyświetla tylko moduły
phpinfo(INFO_MODULES);

// Wyświetla konfigurację i moduły
phpinfo(INFO_CONFIGURATION | INFO_MODULES);
?>

Kompatybilność: PHP 4, 5 i nowsze wersje.

Krok po kroku – jak utworzyć i uruchomić plik phpinfo()?

Poniżej znajdziesz prostą instrukcję, jak sprawdzić konfigurację PHP na swoim serwerze:

  1. Utwórz plik na komputerze – otwórz edytor tekstu (np. Notatnik, VS Code), wklej poniższy kod i zapisz go jako info.php:

    <?php
    phpinfo();
    ?>

  2. Prześlij plik na serwer – użyj klienta FTP (np. FileZilla) i umieść plik w wybranym katalogu, np. public_html;
  3. Uruchom w przeglądarce – wejdź pod adres, np. https://twojadomena.pl/info.php. Strona wyświetli pełny raport – skorzystaj z Ctrl + F, aby gwałtownie znaleźć parametry, np. memory_limit;
  4. Sprawdź i usuń – po analizie usuń plik z serwera. phpinfo() ujawnia wrażliwe dane (ścieżki, wersje), co stanowi realne ryzyko bezpieczeństwa.

Na serwerach współdzielonych (np. LH.pl, home.pl) procedura wygląda identycznie.

Kiedy i dlaczego używać phpinfo()?

phpinfo() przydaje się w wielu kluczowych scenariuszach, m.in. wtedy, gdy:

  • weryfikujesz wymagania aplikacji – przed instalacją CMS/Frameworków, takich jak WordPress, Laravel czy Magento, sprawdź wersję PHP, wymagane rozszerzenia (np. mysqli, OpenSSL) i limity;
  • debugujesz błędy – przy problemach z uploadem sprawdź file_uploads, upload_max_filesize, a także ustawienia jak allow_url_fopen;
  • optymalizujesz serwer – dostosuj display_errors, max_execution_time, error_reporting i inne parametry wpływające na wydajność;
  • porównujesz środowiska – na DEV/STAGING/PROD upewnij się, iż najważniejsze konfiguracje są spójne;
  • współpracujesz ze wsparciem technicznym – udostępnij zrzut ekranu z phpinfo() w celu szybszej diagnozy.

Najczęściej sprawdzane dyrektywy i ustawienia obejmują:

  • allow_url_fopen – włączanie/wyłączanie pobierania danych zdalnych via HTTP/FTP;
  • display_errors – kontrolę wyświetlania błędów (wyłącz na produkcji!);
  • file_uploads – zezwolenie na przesyłanie plików;
  • memory_limit – limit pamięci dla procesu PHP (np. 256M).

Bezpieczeństwo – nigdy nie zostawiaj phpinfo() na serwerze!

Nigdy nie pozostawiaj pliku z phpinfo() publicznie dostępnego po zakończonej diagnostyce. To miecz obosieczny – atakujący mogą wykorzystać wersje modułów i ścieżki do przygotowania exploitów. Stosuj następujące dobre praktyki:

  • usuwaj plik po użyciu – minimalizujesz ekspozycję środowiska;
  • ograniczaj dostęp – jeżeli musisz go czasowo zostawić, zabezpiecz hasłem lub dozwolonymi adresami IP;
  • na produkcji ogranicz zakres – np. phpinfo(INFO_GENERAL); zamiast pełnego raportu.

Alternatywy dla phpinfo()

Jeśli nie możesz lub nie chcesz uruchamiać pliku na serwerze, skorzystaj z poniższych metod:

  • komenda CLI – php --ini (lokalizacja plików konfiguracyjnych), php -m (lista modułów);
  • plik php.ini – ścieżkę znajdziesz w phpinfo(); edytuj potrzebne dyrektywy;
  • panel hostingowy – cPanel lub Plesk często mają wbudowany podgląd phpinfo();
  • inne funkcje PHP – ini_get('nazwa_dyrektywy') do pobierania pojedynczych wartości.

Przykłady użycia w praktyce

Aby wyświetlić pełny raport, użyj najprostszego możliwego skryptu:

<?php
phpinfo();
?>

Jeśli zależy Ci na szybkim wglądzie w wersję PHP i limit pamięci oraz liście modułów, skorzystaj z poniższego przykładu:

<?php
echo "Wersja PHP: " . phpversion() . "<br>";
echo "Memory limit: " . ini_get('memory_limit') . "<br>";
phpinfo(INFO_MODULES);
?>

phpinfo() to fundament pracy z PHP – od początkujących developerów po administratorów serwerów – pozwala uniknąć niekompatybilnych konfiguracji i błyskawicznie zdiagnozować problemy, także w środowiskach chmurowych i kontenerach (np. Docker).

Idź do oryginalnego materiału