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, NSAPI'de php_ini değiştirgesi, THTTPD'de PHP_INI_PATH ortam değişkeni)
PHPRC ortam değişkeni. PHP 5.2.0 öncesinde aşağıda bahsedilen kayıt defteri anahtarından sonra bu değişkene bakılırdı.
PHP 5.2.0'dan itibaren, PHP'nin farklı sürümlerine ait php.ini dosyaları için Windows kayıt defterinde sırayla aşağıdaki yerlere bakılmaktadır: [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. Bu anahtarlarda bir IniFilePath değeri varsa ilk bulunan php.ini konumu kullanılır.
[HKEY_LOCAL_MACHINE\SOFTWARE\PHP] anahtarının \IniFilePath değeri. (Windows Kayıt Defteri kaydı)
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 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, SVN'de bulunan » en son php.ini dosyası da bu konuda size yardımcı olabilir.
Örnek 1 - 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"
PHP'nin 5.1.0 sürümünden beri .ini dosyalarında bulunan yönergelere isimleriyle değişken olarak erişilebilmektedir. Örnek: open_basedir = ${open_basedir} ":/new/dir".