Yapılandırma dosyası (php.ini) PHP başlatıldığında okunur. PHP'nin sunucu modülü sürümlerinde bu işlem bir kereliğine HTTP sunucusu başlatıldığında gerçekleşir. CGI ve CLI sürümlerinde ise PHP'nin her çağrılışında işlem tekrarlanır.
php.ini sırasıyla şuralarda aranır:
SAPI modülüne özgü konum (Apache 2'de PHPIniDir
yönergesi, CGI ve CLI için -c
komut satırı seçeneği)
PHPRC ortam değişkeni.
php.ini
dosyasının konumu PHP'nin farklı sürümleri için ayarlanabilmektedir. Kayıt defteri anahtarlarının kökü, kurulu işletim sistemi ve PHP'nin 32 veya 64 bit oluşuna bağlıdır. 32 bit işletim sisteminde 32 bit PHP veya 64 bit işletim sisteminde 64 bit PHP için [(HKEY_LOCAL_MACHINE\SOFTWARE\PHP], 64 bit işletim sisteminde 32 bit PHP sürümü için bunu yerine [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]] kullanın. Aynı bitlik kurulum için kayıt defteri anahtarları aşağıdaki sırayla incelenir: [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z]
, [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y]
ve [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x]
. Burada x, y ve z harfleri PHP'nin ana, alt ve yama sürümlerini belirtir. 64 bit işletim sisteminde PHP'nin 32 bit sürümleri için kayıt defteri anahtarları aşağıdaki sırayla incelenir: [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y.z]
, [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y]
ve [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x]
. Burada x, y ve z harfleri PHP'nin ana, alt ve yama sürümlerini belirtir. Bu anahtarlarda bir IniFilePath
değeri varsa ilk bulunan php.ini
konumu kullanılır (sadece Windows).
[HKEY_LOCAL_MACHINE\SOFTWARE\PHP]
or [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]
anahtarının \IniFilePath
değeri (sadece Windows).
Geçerli çalışma dizini (CLI dışında)
HTTP sunucusunun dizini (SAPI modülleri için) veya PHP dizini (Windows için)
Windows dizini (C:\windows veya C:\winnt) (Windows için) veya --with-config-file-path
derleme seçeneği ile belirtilen dizin.
php-SAPI.ini mevcutsa (burada SAPI, kullanılan SAPI'dir, dolayısıyla php-cli.ini veya php-apache.ini gibi bir dosya ismidir), php.ini yerine bu dosya kullanılır. SAPI ismi php_sapi_name() işlevi ile saptanabilir.
Bilginize:
Apache HTTP sunucusunun başlatıldığında kök dizine geçmesi PHP'nin php.ini dosyasını dosya sisteminin kök dizininde aramasına sebep olur.
php.ini içinde kullanılabilen ortam değişkenlerinin kullanımı aşağıda gösterilmiştir.
Örnek 1 - php.ini Ortam Değişkenleri
; PHP_MEMORY_LIMIT'in ortamdan alınışı memory_limit = ${PHP_MEMORY_LIMIT}
php.ini yönergelerinin eklentilerle ilgili olanlarının belgeleri her eklentinin kendi belgeleri içindedir. Temel yönergelerin listesini eklerde bulabilirsiniz. Tamamı olmasa da yönergelerin büyük çoğunluğu kılavuzda belgelenmiş durumdadır. Kurulu PHP sürümünüzde geçerli yönergelerin tam listesi için kendi içinde iyi açıklanmış php.ini dosyanızı okuyun. Ayrıca, Git'te bulunan » en son php.ini dosyası da bu konuda size yardımcı olabilir.
Örnek 2 - php.ini örneği
; bir noktalı virgülden (;) sonra gelen tüm metin parçaları yok sayılır [php] ; bölüm imleyiciler de (köşeli ayraç içindeki metinler) yok sayılır ; Mantıksal değerler için şu değerlerden herhangi biri kullanılabilir: ; true, on, yes ; false, off, no, none register_globals = off track_errors = yes ; Dizgeleri çift tırnak imlerinin arasında belirtebilirsiniz include_path = ".:/usr/local/lib/php" ; tersbölü karakterleri diğer karakterler gibi ele alınır include_path = ".;c:\php\lib"
.ini dosyalarında bulunan yönergelere isimleriyle değişken olarak erişilebilir. Örnek: open_basedir = ${open_basedir} ":/new/dir"
.
PHP'yi, php.ini'yi okuduktan sonra bir dizindeki .ini dosyalarını tarayacak şekilde yapılandırmak mümkündür. Bu, --with-config-file-scan-dir seçeneği ayarlanarak derleme sırasında yapılabilir. Tarama dizini daha sonra çalışma anında PHP_INI_SCAN_DIR ortam değişkeni ayarlanarak geçersiz kılınabilir.
Birden fazla dizini platforma özgü yol ayırıcıyla ayırarak taramak mümkündür (Windows, NetWare ve RISC OS için ;
diğer tüm platformlarda :
kullanılır. PHP'nin kullandığı değer PATH_SEPARATOR
sabiti olarak mevcuttur). PHP_INI_SCAN_DIR'de boş bir dizin verilmişse, PHP ayrıca derleme sırasında --with-config-file-scan-dir seçeneği ile verilen dizini de tarayacaktır.
PHP her dizinde, PHP .ini
uzantılı tüm dosyaları alfabetik sırayla tarar. php_ini_scanned_files() işlevi ile veya PHP'yi --ini seçeneğiyle çalıştırarak yüklenen dosyaların bir listesi ve sırası elde edilebilir.
PHP'nin --with-config-file-scan-dir=/etc/php.d ile yapılandırıldığını ve yol ayırıcının : olduğunu varsayalım ... $ php PHP /etc/php.d/*.ini dosyalarının tamamını yapılandırma dosyaları olarak yükler $ PHP_INI_SCAN_DIR=/usr/local/etc/php.d php PHP /usr/local/etc/php.d/*.ini dosyalarının tamamını yapılandırma dosyaları olarak yükler $ PHP_INI_SCAN_DIR=:/usr/local/etc/php.d php PHP /etc/php.d/*.ini ve ardından /usr/local/etc/php.d/*.ini dosyalarının tamamını yapılandırma dosyaları olarak yükler $ PHP_INI_SCAN_DIR=/usr/local/etc/php.d: php PHP /usr/local/etc/php.d/*.ini ve ardından /etc/php.d/*.ini dosyalarının tamamını yapılandırma dosyaları olarak yükler