PHP 7.4.22 Released!

Yapılandırma Dosyası

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)

  • 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".

Tarama Dizinleri

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

Sürüm Bilgisi

Sürüm: Açıklama
7.0.0 # karakteri artık açıklama olarak ele alınmıyor.
5.3.0 # karakteri artık açıklama olarak ele alınmıyor ve kullanılırsa kullanımımın önerilmediğini belirten bir uyarı çıktılanıyor.
5.2.0 PHP_INI_SCAN_DIR ortam değişkeni, yapılandırma betiği aracılığıyla tarama dizini kümesini geçersiz kılacak şekilde ayarlanabilir.
5.1.0 I. ini dosyalarının içindeki mevcut .ini değişkenlerine atıfta bulunmak artık mümkün.

add a note add a note

User Contributed Notes 1 note

up
3
ohcc at 163 dot com
4 years ago
in php.ini you can reference to an existing directive or an environment variable using the syntax ${varname}.

Here are some examples.

sys_temp_dir = "${WINDIR}"

--- ${WINDIR} will be replaced by $_ENV['WINDIR'] at runtime

--- you can set environment variables by Apache and use them in php.ini
--- FcgidInitialEnv AUTHOR "WUXIANCHENG"
--- error_log = "${AUTHOR}.log"

error_log = "${sys_temp_dir}"

--- ${sys_temp_dir} will be replace by the value of sys_temp_dir

Also you can use PHP constants in php.ini, but DONT'T wrap them in ${} or "".

error_log = "/data/"PHP_VERSION"/"

---  it works like this php code:

$error_log =  "/data/" . PHP_VERSION . "/";
To Top