array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'tr', ), 'this' => array ( 0 => 'function.parse-ini-file.php', 1 => 'parse_ini_file', ), 'up' => array ( 0 => 'ref.filesystem.php', 1 => 'Dosya Sistemi İşlevleri', ), 'prev' => array ( 0 => 'function.move-uploaded-file.php', 1 => 'move_uploaded_file', ), 'next' => array ( 0 => 'function.parse-ini-string.php', 1 => 'parse_ini_string', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'tr', 'path' => 'reference/filesystem/functions/parse-ini-file.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(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|false
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 bağımsız değişkene true
atanırsa bölüm isimlerini ve içerdikleri
ayarları içeren çok boyutlu bir dizi döner. Bağımsız değişkenin ö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.
$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 ini
değerlerinde özel anlamları vardır. Buna ek olarak, ortam değişkenleri ve
önceden tanımlanmış yapılandırma seçenekleri ${}
sözdizimi
kullanılarak okunabilir (bkz: get_cfg_var()).
; 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) ; PATH ortam değişkenini oku path = ${PATH} ; 'memory_limit' yapılandırma seçeneğini oku configured_memory_limit = ${memory_limit}
Örnek 5 Öncelleme Karakterleri
Bazı karakterlerin çift tırnaklı dizgelerde özel anlamları olduğundan
önlerine tersbölü çizgisi konarak öncelenmeleri gerekir. Hepsinden önce,
dizgenin sınırlarını belirleyen çift tırnak "
ve
tersbölünün \
kendisi (özel karakterlerden birini
önceliyorsa) bu özel karakterlerdendir:
tırnaklı = "She said \"Exactly my point\"." ; İçinde tırnak imleri bulunan; bir dize elde edilir. ipucu = "Çift tırnağı öncelemek için \\\" kullan" ; Sonuç: Çift tırnağı öncelemek için \" kullan
Windows benzeri dosya yollarında bunun bir istisnası vardır: Tırnaklı dizgeyi bir satırsonu izliyorsa sondaki ters bölüyü öncelememek mümkündür:
save_path = "C:\Temp\"
Çok satırlı bir değerde ardından satır sonu gelen bir çift tırnağın öncelenmesi gerekiyorsa, değer birleştirmeyi aşağıdaki şekilde kullanmak mümkündür (bir çift tırnaklı dizenin hemen ardından bir diğeri gelir):
long_text = "Lorem \"ipsum\""" dolor" ; Sonuç: Lorem "ipsum"\n dolor
Özel anlamı olan karakterlerden bir diğeri $
dolar imidir.
Ardından açan kaşlı ayraç geliyorsa dolar iminin öncelenmesi gerekir:
code = "\${test}"
Karakter önceleme INI_SCANNER_RAW
kipinde
desteklenmez (bu kipte tüm karakterler "oldukları gibi" işlenir).
İni çözümleyicisinin standart öncelemleri (\n
,
\t
ve benzerlerini) desteklemediğini dikkate almak gerekir.
Gerekirse, parse_ini_file() işlevinin sonucunu
stripcslashes() işleviyle yeniden işlemden geçirmek
gerekebilir.
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çanull
,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.