$_SERVER
(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
$_SERVER — Sunucu ve işletme ortamı bilgisi
Açıklama
$_SERVER başlıklar, yollar ve betiklerin yerleri gibi
bilgileri içeren bir dizidir. Bu dizideki girdiler HTTP sunucusu tarafından
oluşturulur. Her HTTP sunucusu bunları sunacak diye bir garanti yoktur;
sunucular bazıları ile işlem yapmayabilir veya burada listelenmeyen
başkalarını sağlayabilirler. Bu değişkenlerden çoğu » CGI/1.1 Belirtimi içinde ele alınır.
Bilginize:
PHP komut satırından
çalıştırıldığında bu girdilerin çoğu ya kullanılamaz ya da anlamsız olur.
Aşağıda listelenen dizi elemenlarına ek olarak, PHP istek başlıklarındaki
değerlerle ek elemanlar oluşturur. Bu girdilerin isimleri
HTTP_
öneki ile başlar, küçük harfler büyük harfe
dönüştürülür ve tirelerin yerini alt çizgiler alır. Örneğin,
Accept-Language
başlığının dizideki elemanına
$_SERVER['HTTP_ACCEPT_LANGUAGE']
ile erişilebilir.
İndisler
- 'PHP_SELF'
-
Çalıştırılmakta olan betiğin, belge kök dizinine göreli dosya adıdır.
Örneğin, http://example.com/foo/bar.php
adresindeki bir betik için $_SERVER['PHP_SELF']
değeri /foo/bar.php olacaktır. __FILE__ sabiti geçerli
dosyanın tam yolunu ve dosya adını içerir.
PHP komut satırı işlemcisi olarak çalışıyorsa
bu değişken betik adını içerir.
- 'argv'
-
Betiğe aktarılan bağımsız değişken dizisidir. Betik komut satırında
çalıştığında, komut satırı bağımsız değişkenlerine C gibi erişim imkanı
verir. Betik GET yöntemi üzerinden çağrıldığında, bu değişken sorgu
dizgesini içerir.
- 'argc'
-
Betiğe aktarılan komut satırı bağımsız değişkenlerinin sayısını içerir
(betik eğer komut satırından çalıştırılıyorsa).
- 'GATEWAY_INTERFACE'
-
Sunucunun desteklediği CGI belirtiminin sürümünü içerir;
'CGI/1.1'
gibi.
- 'SERVER_ADDR'
-
Geçerli betiğin altında çalıştığı sunucunun IP adresidir.
- 'SERVER_NAME'
-
Geçerli betiğin altında çalıştığı sunucunun adıdır. Eğer betik bir
sanal konak üzerinde çalışıyorsa, o sanal konağın adını içerir.
Bilginize:
Apache 2 altında, UseCanonicalName = On
ve ServerName
atamaları yapılmalıdır. Aksi
takdirde, bu değer istemci tarafından belirtilmiş muhtemelen sahte bir
konak ismi içerebilir. Güvenliliğin önemli olduğu içeriklerde bu değere
güvenmek doğru değildir.
- 'SERVER_SOFTWARE'
-
Sunucu kimlik dizgesi, isteklere verilen cevap başlıklarının içinde
verilir.
- 'SERVER_PROTOCOL'
-
Sayfa isteğinin yapıldığı protokolün ismi ve sürümüdür;
'HTTP/1.1'
gibi;
- 'REQUEST_METHOD'
-
Sayfaya erişim için kullanılan istek yöntemi;
'GET'
,
'HEAD'
, 'POST'
,
'PUT'
gibi.
Bilginize:
Eğer istek yöntemi HEAD
ise PHP betiği başlıklar
gönderildikten sonra (çıktının çıktı tamponu olmadan üretilmesinden
sonra anlamında) sonlandırılır.
- 'REQUEST_TIME'
-
İsteğin başlangıç zamanı etiketidir.
- 'REQUEST_TIME_FLOAT'
-
Mikrosaniye cinsinden isteğin başlangıç zamanı damgası.
- 'QUERY_STRING'
-
Sorgu dizgesi, sayfaya erişirken kullanılabilir.
- 'DOCUMENT_ROOT'
-
Sunucunun ayar dosyasında da tanımlandığı gibi, geçerli betiğin altında
çalıştığı belge kök dizinidir.
- 'HTTPS'
-
Eğer betik HTTPS protokolü ile sorgulanmışsa boş olmayan bir değer
atanır.
- 'REMOTE_ADDR'
-
Geçerli sayfayı görüntüleyen kullanıcının IP adresidir.
- 'REMOTE_HOST'
-
Geçerli sayfayı görüntüleyen kullanıcının sunucu adıdır.
Kullanıcının REMOTE_ADDR değerinden
ters dns sorgusuyla elde edilir.
Bilginize:
HTTP sunucusu bu değişkeni oluşturmak için yapılandırılmalıdır.
Bunun için, örneğin Apache'de httpd.conf içinde
HostnameLookups On
olmalıdır. Ayrıca
gethostbyaddr() işlevine de bakılabilir.
- 'REMOTE_PORT'
-
Kullanıcının makinesinin HTTP sunucusu ile haberleşmek için
kullandığı porttur.
- 'REMOTE_USER'
-
Kimliği kanıtlanmış kullanıcı.
- 'REDIRECT_REMOTE_USER'
-
İstek dahilen yönlendirilmişse kimliğİ kanıtlanmış kullanıcı.
- 'SCRIPT_FILENAME'
-
Geçerli betiğin mutlak yoludur.
Bilginize:
Eğer betik file.php veya
../file.php gibi göreli bir yolla komut
satırından çalıştırılırsa,
$_SERVER['SCRIPT_FILENAME'] kullanıcı tarafından
belirtilen göreli yolu içerir.
- 'SERVER_ADMIN'
-
HTTP sunucusu ayar dosyasındaki SERVER_ADMIN (Apache için) yönergesine
verilen değerdir. Eğer betik bir sanal konak üzerinde çalışıyorsa,
o sanal konak için için tanımlanmış değer olur.
- 'SERVER_PORT'
-
Haberleşme için HTTP sunucusu tarafından kullanılan porttur.
Öntanımlı kurulumlar için değeri
'80'
dir; örneğin
SSL kullanımında bunu güvenli HTTP portu olarak ne tanımladıysanız
ona değiştirebilirsiniz.
Bilginize:
Apache 2 altında, fiziksel (gerçek) portu almak için
UseCanonicalName = On
'dan başka
UseCanonicalPhysicalPort = On
da tanımlanmalıdır,
aksi takdirde, bu değer sahte olabilir ve fiziksel port değerini
döndürüp döndürmeyeceği belli olmaz. Güvenliğin önemli olduğu
içeriklerde bu değere güvenmek doğru değildir.
- 'SERVER_SIGNATURE'
-
Eğer etkinse, sunucu tarafından üretilen sayfalara eklenen,
sunucu sürümünü ve sanal konak adını içeren dizgidir.
- 'PATH_TRANSLATED'
-
Sunucu gerekli sanaldan gerçeğe dönüşümleri yaptıktan sonra geçerli
betiğin dosya sistemini (belge kökü değil) temel alan yoludur.
Bilginize:
Apache 2 kullanıcıları PATH_INFO tanımlatmak için
httpd.conf içinde AcceptPathInfo =
On
yapılandırmasını kullanabilirler.
- 'SCRIPT_NAME'
-
Geçerli betiğin yolunu içerir. Kendi kendilerini göstermesi gereken
sayfalar için kullanışlıdırlar. __FILE__ sabiti
geçerli (örn. içerilen) dosyanın tam yolunu vedosya adını içerir.
- 'REQUEST_URI'
-
Sayfaya erişim için belirtilen URI; örneğin,
'
/index.html
'.
- 'PHP_AUTH_DIGEST'
-
Özetli HTTP kimlik doğrulaması
yapılırken bu değişken istemci tarafından gönderilen 'Authorization'
başlığında belirtilir (böylece siz de uygun geçerlilik denetimini
yapmak için bunu kullanabilirsiniz).
- 'PHP_AUTH_USER'
-
HTTP kimlik doğrulaması yapılırken bu değişkene kullanıcı tarafından
sağlanan kullanıcı adı atanır.
- 'PHP_AUTH_PW'
-
HTTP kimlik doğrulaması yapılırken bu değişkene kullanıcı tarafından
sağlanan parola atanır.
- 'AUTH_TYPE'
-
Apache altında modül olarak HTTP kimlik doğrulaması yapılırken
bu değişkene kullanılan kimlik doğrulama türü atanır.
- 'PATH_INFO'
-
İstemci tarafından sağlanan dosya yolunu içerir; dosya isminin ardında
bir sorgu dizgesi olsa bile bu gösterilmez. Örneğin, betiğe şöyle
erişiliyor olsun:
http://www.example.com/php/path_info.php/some/stuff?foo=bar.
Bu durumda $_SERVER['PATH_INFO'],
/some/stuff
değerini içerecektir.
- 'ORIG_PATH_INFO'
-
PHP tarafından işlenmeden önceki özgün 'PATH_INFO'.
Örnekler
Örnek 1 - $_SERVER örneği
<?php
echo $_SERVER['SERVER_NAME'];
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
Notlar
Bilginize:
Bu bir süper küreseldir. Yani bir betiğin her yerinde geçerlidir.
Değişkene işlevler ve yöntemlerin içinden erişmek için global
$değişken; deyimine gerek yoktur.