Często potrzebujemy dowiedzieć się jak najwięcej informacji o serwerze, natywna funkcja `phpinfo()` jest do tego świetna:
phpinfo();die; // po zapisaniu konfiguracji zakończ działanie skryptu
Dzięki temu można łatwo sprawdzić zainstalowaną wersję, rozszerzenia, biblioteki i wiele innych informacji.
Informacje na temat konfigurowania i zmiany ustawień znajdują się na końcu tego artykułu.
Czasami przydatne jest wylistowanie tylko określonych informacji, dlatego możemy ustawić pierwszy parametr, aby dokładnie określić, co nas interesuje:
phpinfo(INFO_MODULES);
Do ustawiania używane są stałe predefiniowane:
Nazwa stałej | Wartość | Opis |
---|---|---|
INFO_GENERAL | 1 | Konfiguracja ogólna, lokalizacja php.ini, data ostatniej aktualizacji, serwer WWW, informacje o systemie i inne. |
INFO_CREDITS | 2 | Kredyty PHP, więcej informacji znajdziesz w phpcredits() . |
INFO_CONFIGURATION | 4 | Aktualna lokalizacja i dyrektywy dotyczące ustawień. Więcej informacji dostarczy funkcja ini_get() . |
INFO_MODULES | 8 | Informacje o zainstalowanych modułach. Więcej informacji na ten temat można znaleźć w funkcji get_loaded_extensions() . |
INFO_ENVIRONMENT | 16 | Informacja o zmiennej Environment , dostępnej jako $_ENV . |
INFO_VARIABLES | 32 | Przegląd ustawień zmiennych superglobalnych, znanych jako EGPCS (Environment, GET, POST, Cookie, Server). |
INFO_LICENSE | 64 | Informacja o licencji na używanie PHP i innych warunkach użytkowania. |
INFO_ALL | -1 | Wyświetlanie wszystkich informacji (wartość domyślna) |
$_SERVER
.Wiele informacji o ustawieniach serwera możemy uzyskać bezpośrednio podczas działania skryptu (np. e-mail do webmastera, aktualny adres IP odwiedzającego czy aktualnie wywoływany adres URL).
Wypisanie wszystkich istniejących wartości jest proste:
foreach ($_SERVER as $key => $value) {echo $key . ':' . $value . '<br>.';}
Ostrzeżenie: Nie wszystkie indeksy muszą istnieć (na przykład jeśli skrypt uruchamia crona w trybie CLI, indeks z adresem URL strony lub adresem IP żądania nie będzie istniał).
Znaczna część konfiguracji jest przechowywana w pliku php.ini
i nie jest bezpośrednio dostępna z poziomu PHP w normalny sposób. Na przykład maksymalny rozmiar wysyłanego pliku.
Aby bezpośrednio odczytać konfigurację, należy użyć funkcji ini_get()
(uwaga: funkcja ta może nie być włączona na wszystkich serwerach, dotyczy to zwłaszcza hostów).
Na przykład, jeśli chcemy dowiedzieć się, jaki jest maksymalny rozmiar pliku, który możemy przesłać, musimy napisać własną implementację:
/*** @autor Jan Barášek*/public static function getMaxUploadFileSize(): int{$maxUpload = min(ini_get('post_max_size'),ini_get('upload_max_filesize'));if (strncmp($maxUpload, 'M', 1) === 0) {return (int) str_replace('M', '', $maxUpload);}return (int) $maxUpload;}
Zwraca maksymalną wartość upload_max_filesize
i post_max_size
w MB.
Same ustawienia są przechowywane w pliku php.ini
. Jego położenie można łatwo znaleźć za pomocą funkcji phpinfo()
lub wywołując komendę php --ini
.
> php --iniConfiguration File (php.ini) Path: /etc/php/7.1/cliLoaded Configuration File: /etc/php/7.1/cli/php.iniScan for additional .ini files in: /etc/php/7.1/cli/conf.dAdditional .ini files parsed: /etc/php/7.1/cli/conf.d/10-mysqlnd.ini,/etc/php/7.1/cli/conf.d/10-opcache.ini,/etc/php/7.1/cli/conf.d/10-pdo.ini,/etc/php/7.1/cli/conf.d/20-calendar.ini,/etc/php/7.1/cli/conf.d/20-ctype.ini,/etc/php/7.1/cli/conf.d/20-exif.ini,/etc/php/7.1/cli/conf.d/20-fileinfo.ini,/etc/php/7.1/cli/conf.d/20-ftp.ini,/etc/php/7.1/cli/conf.d/20-gd.ini,/etc/php/7.1/cli/conf.d/20-gettext.ini
Alternatywnie ścieżkę można sprytnie przetworzyć (działa w systemach Linux):
php -r "phpinfo();" | grep php.ini
Wróci:
Configuration File (php.ini) Path => /etc/php/7.1/cliLoaded Configuration File => /etc/php/7.1/cli/php.ini
Ważne: Zazwyczaj konfiguracja jest podzielona na kilka plików w zależności od środowiska i pakietów, gdzie
php.ini
jest globalnie ważny dla wszystkich, podczas gdy np. konfiguracjaCLI
jest ważna tylko dla trybu CLI, tj. wywołania crona lub komendy z Terminala.
Przykładem właściwości, która jest często konfigurowana bezpośrednio w php.ini
, jest maksymalny rozmiar wysyłanego pliku (domyślnie 2 MB
, co w 2018 roku jest już niską wartością).
W pliku konfiguracyjnym zapisuje się to w następujący sposób, np:
; Maximum allowed size for uploaded files.upload_max_filesize = 40M; Must be greater than or equal to upload_max_filesizepost_max_size = 40M
*Punkt środkowy oznacza komentarz, po którym następują konkretne dyrektywy konfiguracyjne.
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | pl