2009-09-08 11 views
23

Jak dołączyć plik php.ini do innego pliku php.ini?Jak dołączyć plik php.ini do innego pliku php.ini?

+2

Jestem zainteresowany tym, w jaki sposób RHEL/Fedora realizuje dołączenie /etc/php.d/*. Czy poprawili PHP, aby było to możliwe? – gahooa

+0

@gahooa to pytanie, które prowadziłem tutaj. Czy kiedykolwiek dowiedziałeś się, w jaki sposób realizują one /etc/php.d/*? –

+1

zobacz akceptowaną odpowiedź poniżej, to również odpowiedź na twoje pytanie. U można również zrobić php -i (phpinfo()) i zobaczyć, jak zbudowano php. –

Odpowiedz

17

Nie sądzę, że można "dołączyć" pliki .ini z głównego pliku php.ini.

Jednym z możliwych rozwiązań, choć może być użycie tej opcji w linii konfigurować przy kompilacji PHP:

--with-config-file-scan-dir=PATH               
    Set the path where to scan for configuration files 

Jeśli opcja ta jest używana w czasie kompilacji, PHP będzie szukał dla każdego pliku ini w tym katalogu, oprócz "normalnego" pliku php.ini.

Przypuszczam, że jest to używane przez Ubuntu, na przykład, który używa innego pliku .ini dla każdego pobranego rozszerzenia, zamiast modyfikowania pliku php.ini.

Ścieżka do pliku php.ini są zdefiniowane z tej opcji, na linii configure:

--with-config-file-path=PATH                
    Set the path in which to look for php.ini [PREFIX/lib] 

Mimo to prawdopodobnie oznacza, że ​​będziesz musiał ponownie skompilować PHP - co nie jest hard, btw - najtrudniejszą częścią jest uzyskanie potrzebnych zależności.

I tutaj jest post na wewnętrznych @ mailling liście, że mówi to samo, co ja: config files and PHP_CONFIG_FILE_SCAN_DIR

+0

Oprócz ustawienia czasu kompilacji dostępna jest również zmienna środowiskowa 'PHPRC', która umożliwia zmianę domyślnego katalogu' php.ini' (i możliwych innych plików ini). –

+0

Kiedy mówisz na linii konfiguracji, co to znaczy? Czy to gdzieś plik? – tomjung

1

Nie możesz. Czytać strony internetowe:

The configuration file

Podsumowanie: plik konfiguracyjny (php.ini) są odczytywane podczas startu PHP. Dla wersji PHP modułu serwera, zdarza się to tylko raz, gdy uruchomiony jest serwer WWW . W przypadku wersji CGI i CLI dzieje się tak na każdym wywołaniu .

.user.ini files

STRESZCZENIE: W uzupełnieniu do głównego pliku php.ini , skany PHP dla plików INI w każdym katalogu, zaczynając od katalogu żądanego pliku PHP , i pracy aż do bieżącego katalogu głównego dokumentu (ustawionego w $ _SERVER ['DOCUMENT_ROOT']). Tylko ustawienia INI z trybami PHP_INI_PERDIR i PHP_INI_USER zostaną rozpoznane w plikach INI w stylu .user.ini.

+3

Przeczytałem je przed opublikowaniem, nie mówię nic o tym, czy jest to możliwe, czy nie. –

0

Można próbować symulować to wykorzystanie funkcji ini_set. Ale jak wskazuje "strona podręcznika", nie wszystkie opcje ini można zmienić za pomocą ini_set. Z pewnością jest to przydatna funkcja.

7

Zainstalowałem memcached dla php i nie byłem pewny jak upewnić się, że jego ini było zawarte w moim php.ini, ale jak się okazuje, to automatycznie. Możesz sprawdzić, co ładuje się, uruchamiając php --ini.

php --ini 
Configuration File (php.ini) Path: /opt/local/etc/php5 
Loaded Configuration File:   (none) 
Scan for additional .ini files in: /opt/local/var/db/php5 
Additional .ini files parsed:  /opt/local/var/db/php5/memcached.ini 
+0

brzmi jak ścieżka pliku konfiguracyjnego zwrócona przez "php --ini" może nie jest taka sama jak zwrócona ze strony internetowej (). – gonglong

4

można również określić ścieżkę w ~/.bashrc

export PHP_INI_SCAN_DIR=/usr/local/lib/php.d 
1

Wydaje się, że nie może zawierać jeden plik ini do drugiego tak robi odwoływać i załadowany. Możesz jednak ustawić php, aby ładował kilka plików, informując, które foldery należy zaglądać.

Podczas korzystania z konfiguracji FastCGI (również w FPM, choć nie wiem tego na pewno), można wyeksportować zmienne środowiskowe z poziomu opakowania php.

Nie można zrobić:

export PHP_INI_SCAN_DIR=/etc/php5/cgi/conf.d:/var/www/mydomain.net/etc 

/var/www/mydomain.net/etc jest tylko przykładem, jest to folder, w którym można umieścić swoje dodatkowe pliki ini w. Wygląda na to, że może to być lista oddzielona :.

Użyj phpinfo.php (plik o nazwie arbitralnie zawierający tylko <? phpinfo();), otwórz odpowiedni adres URL w przeglądarce i sprawdź listę analizowanych katalogów oraz listę plików, które zostaną załadowane w górnym obszarze.

/etc/php5/cgi/conf.d powinien być zawsze dołączony (jak sądzę, ponieważ został skompilowany do pliku wykonywalnego php) i prawdopodobnie nie jest potrzebny.

Powiązane problemy