Własny plik konfiguracyjny php php.ini
Czasami zachodzi potrzeba zmiany ustawień interpretera PHP .
Aktualne ustawienia, moduły, aktualną lokalizację pliku php.ini możemy obejrzeć za pomocą phpinfo(), więc tworzymy sobie np. plik o nazwie phpinfo.php a do niego wpisujemy taki kod:
<?php phpinfo(); ?> |
Następnie wywołujemy go w przeglądarce i otrzymujemy wszelkie potrzebne informacje.
Plik konfiguracyjny
Plik konfiguracyjny (php.ini) jest wczytywany podczas startu PHP. Na serwerze z modułem PHP dzieję się to tylko raz, podczas startu serwera. Dla wersji CGI oraz CLI, jest wczytywany przy każdym wywołaniu.
php.ini jest wyszukiwany w następujących lokalizacjach (w takiej kolejności):
- SAPI określonej lokalizacji modułu
- PHPIniDir dyrektywa w Apache 2
- -c opcja linii komend w CGI oraz CLI
- php_ini parametr w NSAPI
- PHP_INI_PATH zmienna środowiskowa w THTTPD
- PHPRC zmienna środowiskowa. Przed PHP 5.2.0 było to sprawdzane po kluczu poniżej.
- W PHP 5.2.0, lokalizację pliku php.ini można ustawić dla różnych wersji PHP. Następujące klucze rejestru sprawdzane są w takiej kolejności: [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z], [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y] i [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x], gzie x, y i z oznaczają PHP major, minor and release wersje. Jeśli istnieje wartość IniFilePath w tych kluczach, wtedy pierwszy znaleziony zostanie użyty jako lokalizacja php.ini (Tylko Windows).
- [HKEY_LOCAL_MACHINE\SOFTWARE\PHP], wartość IniFilePath (Tylko Windows).
- Bieżący roboczy katalog (z wyjątkiem CLI)
- W katalogu internetowym serwera (dla modułów SAPI), lub katalog PHP (otherwise w Windows)
- Katalogu Windows (C:\windows or C:\winnt) (dla Windows), lub –with-config-file-path opcja w czasie kompilacji
Jeśli php-SAPI.ini istnieje (gdzie SAPI jest używane SAPI, więc nazwą jest np. php-cli.ini lub php-apache.ini), jest używane zamiast php.ini. Nazwa SAPI może być ustalona przez php_sapi_name().
Informacja: Apache Web Server zmienia katalog główny na starcie powodując że PHP próbuje odczytać php.ini z katalogu głównego systemu plików, jeśli istnieje.
Od PHP 5.1.0, możliwe jest odwoływaniue się do innych .ini zmiennych z innego pliku .ini. Przykład: open_basedir = ${open_basedir} “:/new/dir”.
Pliki .user.ini
Od PHP 5.3.0, PHP obsługuje pliki .htaccess-style INI w podstawowym katalogu. Pliki te przetwarzane są wyłącznie przez CGI/FastCGI SAPI. Ta funkcjonalność wymaga / nieaktualna rozszerzenia PECL htscanner. Jesli używasz Apache, użyj pliku .htaccess dla takiego samego efektu.
Oprócz głównego pliku php.ini, PHP skanuje pliki INI w każdym katalogu, począwszy od aktualnego katalogu aktualnie wywołanego pliku PHP, i będzie działać aż do aktualnego dokumentu głównego (jak w $_SERVER[‘DOCUMENT_ROOT’]). Tylko ustawienia INI w trybie PHP_INI_PERDIR oraz PHP_INI_USER zostanie rozpoznane w .user.ini-style pliku INI.
Dwie nowe dyrektywy INI, user_ini.filename oraz user_ini.cache_ttl można kontrolować poprzez INI.
user_ini.filename ustawia nazwę pliku którego PHP szuka w każdym katalogu; jesli jest puste, PHP nie szuka w ogóle. Domyślnie jest to .user.ini.
user_ini.cache_ttl kontroluje co jaki czas plik jest ponownie wczytywany. Domyslnie jest 300 sekund (5 minut).
W jakich miejscach jaka konfiguracja może być ustawiona
Te tryby określają kiedy i gdzie może być lub nie odpowiednia dyrektywa, każda dyrektywa odnosi się do jednego z tych trybów. Dla przykładu, niektóre ustawienia moga być zmienione w skrypcie PHP za pomocą ini_set(), natomiast inne moga wymagać php.ini lub httpd.conf.
Dla przykładu, output_buffering ustawione jest na PHP_INI_PERDIR dlatego nie może być ustawione za pomocą ini_set(). Jednakże, display_errors directive jest PHP_INI_ALL dlatego może być ustawione wszędzie, w tym także w ini_set().
- PHP_INI_USER – Wpis moze być zmieniony w skrypcie użytkownika (np. za pomocą ini_set()) lub w rejestrze systemu Windows
- PHP_INI_PERDIR – Wpis może być zmieniony w php.ini, .htaccess lub httpd.conf
- PHP_INI_SYSTEM – Wpis może być zmieniony w php.ini or httpd.conf
- PHP_INI_ALL Wpis może być zmieniony wszędzie
Jak zmienić ustawienia konfiguracyjne
Uruchamianie PHP jako moduł Apache
Korzystając z PHP jako modułu Apache, możesz również zmienić ustawienia za pomocą dyrektyw w plikach konfiguracyjnych Apache(np. httpd.conf) oraz pliki .htaccess. Potrzebne są do tego uprawnienia “AllowOverride Options” lub “AllowOverride All.
Istnieje kilka dyrektyw Apache, które pozwalają na zmianę konfiguracji PHP w plikach konfiguracyjnych Apache. W poszukiwaniu które dyrektywy są PHP_INI_ALL, PHP_INI_PERDIR, or PHP_INI_SYSTEM zajrzyj do dodatku: Lista dyrektyw PHP php.ini
php_value name value
Ustawia wartość określonej dyrektywy. Może być użyty tylko z typem dyrektywy PHP_INI_ALL oraz PHP_INI_PERDIR. Aby usunąć wcześniej ustaloną wartość wykorzystaj none jako wartość.
Informacja: Nie używaj php_value do ustawiania wartości logicznych. php_flag (patrz niżej) powinny być do tego stosowane.
php_flag name on|off
Służy do ustawiania dyrektyw z wartościami logicznymi. Może być użyty tylko z typem dyrektywy PHP_INI_ALL oraz PHP_INI_PERDIR.
php_admin_value name value
Ustawia wartość określonej dyrektywy. Nie może być użyte w pliku .htaccess. Żadna dyrektywa ustawiona poprzez php_admin_value nie może być zmieniona przez .htaccess lub ini_set(). Aby usunąć wcześniej ustaloną wartość wykorzystaj none jako wartość.
php_admin_flag name on|off
Służy do ustawiania dyrektyw z wartościami logicznymi. Nie może być użyte w pliku Żadna dyrektywa ustawiona poprzez php_admin_value nie może być zmieniona przez .htaccess.
Przykład:
<IfModule mod_php5.c> php_value include_path ".:/usr/local/lib/php" php_admin_flag safe_mode on </IfModule> <IfModule mod_php4.c> php_value include_path ".:/usr/local/lib/php" php_admin_flag safe_mode on </IfModule> |
Zmiana konfiguracji PHP z rejestru systemu Windows
Jeśli PHP jest uruchomione w Windows, konfiguracja może być zmieniana w głównym katalogu za pomocą rejestru Windows. Wartości konfiguracji przechowywane są w kluczu HKLM\SOFTWARE\PHP\Per Directory Values, w pod kluczach odpowiadające nazwy. Dla przykładu, wartości konfiguracji dla katalogu c:\inetpub\wwwroot będą przechowywane w kluczu HKLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot. Te ustawienia będą aktywne dla każdego skryptu uruchomionego z tego katalogu lub każdego podkatalogu. Wartość klucza ma taką samą nazwę jak dyrektywa PHP i jego ciąg wartości. Stałe PHP nie są analizowane. Jednakże, można zmieniać tylko dyrektywy PHP_INI_USER za pomocą tego sposobu, wartości PHP_INI_PERDIR już nie można.
Inne interfejsy PHP
Niezależnie od sposobu uruchamiania PHP, niektóre wartości można zmienić podczas uruchamiania skryptu za pomocą ini_set(). Zobacz dokumentację ini_set() aby dowiedzieć się więcej. – Dokumentacja funkcji ini_set()
Jesli interesuje Cię całkowita konfiguracha, możesz użyć funkcji phpinfo(), i zobaczyć stronę z całkowita konfiguracją. Można również uzyskać dostęp do wartości poszczególnych dyrektyw konfiguracyjnych podczas wykonywania skryptu PHP za pomocą ini_get() lub get_cfg_var().
Najnowsze komentarze