(PHP 4, PHP 5, PHP 7, PHP 8)
parse_ini_file — Bir yapılandırma dosyasını çözümler
$dosyaismi
, bool $bölümleri_işle
= false
, int $tarama_kipi
= INI_SCANNER_NORMAL
) : array
parse_ini_file() işlevi dosyaismi
ile belirtilen yapılandırma dosyasını yükler ve içindeki ayarları bir
ilişkisel dizi içinde döndürür.
Belirtilen dosyanın yapısı php.ini dosyasının yapısıyla aynı olmalıdır.
dosyaismi
Çözümlenecek yapılandırma dosyasının ismi. Göreli bir yol kullanılıyorsa, mevcut çalışma dizinine göre, ardından include_path değerlendirilir.
bölümleri_işle
Bu değiştirgeye true
atanırsa bölüm isimlerini ve içerdikleri
ayarları içeren çok boyutlu bir dizi döner. Değiştirgenin öntanımlı
değeri false
'tır.
tarama_kipi
Değeri INI_SCANNER_NORMAL
(öntanımlıdır) veya
INI_SCANNER_RAW
olabilir. Eğer
INI_SCANNER_RAW
belirtilirse seçenek değerleri
çözümlenmez.
PHP 5.6.1 ve sonrasında bu INI_SCANNER_TYPED
olarak da
belirtilebilir. Bu kipte mantıksal, null ve tamsayı türler mümkün olduğunca
korunur. "true"
, "on"
ve
"yes"
dizge değerleri true
değerine dönüştürülür.
"false"
, "off"
,
"no"
ve "none"
ise false
yapılır.
"null"
dizgesi ise null
değerine dönüşür. Ayrıca, tüm
sayısal dizgeler mümkün olduğu takdirde tamsayı türe çevrilir.
Başarısızlık durumunda false
aksi takdirde ayarları bir ilişkisel dizi
içinde döndürür.
Örnek 1 - misal.ini içeriği
; Bu bir yapılandırma dosyası örneğidir. ; php.ini içinde ';' ile başlayan satırlar açıklamadır. [ilk_bölüm] bir = 1 yedi = 7 hayvan = AT [ikinci_bölüm] yol = "/usr/local/bin" URL = "http://localhost/~kullanici" [üçüncü_bölüm] phpversion[] = "5.0" phpversion[] = "5.1" phpversion[] = "5.2" phpversion[] = "5.3" urls[svn] = "http://svn.php.net" urls[git] = "http://git.php.net"
Örnek 2 - parse_ini_file() örneği
INI dosyası içinde sabitler de
(fakat __FILE__
gibi sihirli sabitler değil) çözümlenebilir, bu bakımdan parse_ini_file() işlevini
çalıştırmadan önce bir sabiti bir ini değeri olarak tanımlamışsanız, bu
sabit de sonuca dahil edilir. Sadece ini değerleri değerlendirmeye
alınır ve değer bir sabit olmalıdır. Örnek:
<?php
define('AT', 'Doru at');
// Bölümleri çözümlemeyelim
$ini_dizisi = parse_ini_file("misal.ini");
print_r($ini_dizisi);
// Bölümleri de çözümleyelim
$ini_dizisi = parse_ini_file("misal.ini", true);
print_r($ini_dizisi);
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
Array ( [bir] => 1 [yedi] => 7 [hayvan] => Doru at [yol] => /usr/local/bin [URL] => http://localhost/~kullanici [phpversion] => Array ( [0] => 5.0 [1] => 5.1 [2] => 5.2 [3] => 5.3 ) [urls] => Array ( [svn] => http://svn.php.net [git] => http://git.php.net ) ) Array ( [ilk_bölüm] => Array ( [bir] => 1 [yedi] => 7 [hayvan] => Doru at ) [ikinci_bölüm] => Array ( [yol] => /usr/local/bin [URL] => http://localhost/~kullanici ) [üçüncü_bölüm] => Array ( [phpversion] => Array ( [0] => 5.0 [1] => 5.1 [2] => 5.2 [3] => 5.3 ) [urls] => Array ( [svn] => http://svn.php.net [git] => http://git.php.net ) ) )
Örnek 3 - Bir php.ini dosyasının parse_ini_file() ile çözümlenmesi
<?php
// Aşağıdaki sonuçları karşılaştırmak için basit bir işlev
function evethayır($ifade)
{
return($ifade ? 'Evet' : 'Hayır');
}
// php_ini_loaded_file() ile php.ini dosyasının yolunu öğrenelim.
// İşlev PHP 5.2.4'ten beri kullanılabiliyor.
$ini_yolu = php_ini_loaded_file();
// php.ini dosyasını çözümleyelim
$ini = parse_ini_file($ini_yolu);
// Değerleri karşılaştırıp basalım; get_cfg_var() ile de aynı
// sonuçların alınacağına dikkat ediniz
echo '(çözümlenen) magic_quotes_gpc =' .
evethayır($ini['magic_quotes_gpc']) . PHP_EOL;
echo '(yüklenen) magic_quotes_gpc = ' .
evethayır(get_cfg_var('magic_quotes_gpc')) . PHP_EOL;
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
(çözümlenen) magic_quotes_gpc = Evet (yüklenen) magic_quotes_gpc = Evet
Örnek 4 ara değerler
Sabitleri değerlendirmeye ek olarak, belirli karakterlerin bir ini
değerinde özel anlamları vardır. Buna ek olarak, ortam değişkenleri ve
önceden tanımlanmış değerler ${}
sözdizimi kullanılaraqk
okunabilir.
; bitsel VEYA için | kullanılır three = 2|3 ; bitsel VE için & kullanılır four = 6&5 ; bitsel Ayrıcalıklı VEYA için ^ kullanılır five = 3^6 ; bitsel olumsuzlama için ~ kullanılır negative_two = ~1 ; gruplama için () kullanılır seven = (8|7)&(6|5) ; bir değeri öncelemek için \ kullanılır. satırsonu_mu = "\\n" ; dize içinde "\n" olarak sonuçlanır, ; satırsonu karakteri olarak değil. tırnaklı = "She said \"Exactly my point\"." ; İçinde tırnak imleri bulunan ; bir dize elde edilir. path = ${PATH} also_five = ${five}
Yukarıdaki örnek şuna benzer bir çıktı üretir:
(parsed) magic_quotes_gpc = Yes (loaded) magic_quotes_gpc = Yes
Bilginize:
Bu işlev php.ini dosyasına hiçbir şey yapmaz. Zaten betiğinizi çalıştırdığınız sırada işlem yapılır. Bu işlevi sadece kendi uygulamanızın yapılandırma dosyasını okumak için kullanabilirsiniz.
Bilginize:
INI dosyasındaki bir değer harf ve rakamların haricinde karakterler içeriyorsa bu değeri çift tırnak (") imlerinin arasına almalısınız.
Bilginize: INI dosyalarında anahtar olarak kullanılmaması gereken bazı özel sözcükler vardır. Bunlar:
null
,yes
,no
,true
,false
,on
,off
,none
.INI_SCANNER_TYPED
kipi kullanılmadıkça (PHP 5.6.1 ve sonrası)null
,off
,no
vefalse
sözcükleri""
ile sonuçlanırken,on
,yes
vetrue
sözcükleri"1"
ile sonuçlanır.?{}|&~![()^"
karakterleri hiçbir yerde anahtar veya değer içinde kullanılmamalıdır.
Bilginize:
Eşit işareti içermeyen girdiler yoksayılır. Örneğin, "foo" yoksayılırken "bar =" çözümlenir ve boş değer eklenir. Örneğin, MySQL my.cnf içinde bir "no-auto-rehash" girdisine sahiptir ve herhangi bir değer almadığı için yoksayılır.
Bilginize:
ini dosyaları genellikle HTTP sunucuları tarafından düz metin olarak kabul edilir ve bu nedenle istenirse tarayıcılara sunulur. Bu, güvenlik için ini dosyalarınızı belge kök dizininiz dışında tutmanız veya HTTP sunucunuzu onlara hizmet vermeyecek şekilde yeniden yapılandırmanız gerektiği anlamına gelir. Bunlardan herhangi birinin yapılmaması bir güvenlik riski oluşturabilir.