Günahsız sunucu php. PHP'de HTTP_HOST ve SERVER_NAME arasındaki fark nedir? Komut dosyasının tam adresi

Günahsız sunucu php.  PHP'de HTTP_HOST ve SERVER_NAME arasındaki fark nedir?  Komut dosyasının tam adresi
Günahsız sunucu php. PHP'de HTTP_HOST ve SERVER_NAME arasındaki fark nedir? Komut dosyasının tam adresi
$HTTP_SERVER_VARS [silindi]

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

$_SERVER -- $HTTP_SERVER_VARS [kaldırıldı] - Sunucu ve çalışma zamanı ortamı hakkında bilgi

Tanım

$_SERVER değişkeni, komut dosyası başlıkları, yolları ve konumları gibi bilgileri içeren bir dizidir. Bu dizideki girişler web sunucusu tarafından oluşturulur. Her web sunucusunun bunlardan herhangi birini sağlayacağının garantisi yoktur; sunucu bunlardan bazılarını atlayabilir veya burada listelenmeyen diğerlerini sağlayabilir. Ancak bu değişkenlerin birçoğu » CGI/1.1 spesifikasyonunda mevcuttur, dolayısıyla bunların kendi web sunucunuzda uygulanmasını bekleyebilirsiniz.

$HTTP_SERVER_VARS değişkeni aynı başlangıç ​​bilgisini içerir ancak süper küresel değildir. ($HTTP_SERVER_VARS ve $_SERVER değişkenlerinin farklı değişkenler olduğunu unutmayın, dolayısıyla PHP bunları buna göre ele alır). Ayrıca PHP 5.4.0'da "uzun diziler"in kaldırıldığını, dolayısıyla $HTTP_SERVER_VARS'ın artık mevcut olmadığını unutmayın.

Dizinler

$_SERVER dizisinde aşağıdaki öğelerden herhangi birini bulabilir veya bulamayabilirsiniz. PHP komut satırında çalışıyorsa, çok az öğenin mevcut olacağını (veya gerçekten fark yaratacağını) unutmayın.

" PHP_SELF " Belge köküne göre çalışmakta olan betik dosyasının adı. Örneğin, http://example.com/foo/bar.php adresindeki koddaki $_SERVER["PHP_SELF"], /foo/bar.php olacaktır. __FILE__ sabiti şunları içerir: tam yol ve geçerli (yani bağlı) dosyanın dosya adı. PHP komut satırında çalışıyorsa, bu değişken PHP 4.3.0'dan başlayarak betiğin adını içerir. Daha önce mevcut değildi. "argv" Betiğe aktarılan argümanların dizisi. Betik komut satırında çalıştırıldığında parametrelere C benzeri erişim sağlar Komut satırı. GET yöntemiyle çağrıldığında bu dizi sorgu dizesini içerecektir. "argc" Betiğe iletilen parametrelerin sayısını içerir (eğer komut satırında başlatıldıysa). " GATEWAY_INTERFACE " Sunucu tarafından kullanılan CGI belirtiminin sürümünü içerir; Örneğin" CGI/1.1". " SERVER_ADDR " Geçerli komut dosyasının çalıştığı sunucunun IP adresi. " SERVER_NAME " Geçerli komut dosyasının çalıştığı ana bilgisayar adı. Komut dosyası sanal bir ana bilgisayarda çalışıyorsa, bu, kendisi için tanımlanan adı içerecektir sanal konak. " SERVER_SOFTWARE " Bir isteğe yanıt oluştuğunda başlıklarda belirtilen sunucu tanımlama dizesi. " SERVER_PROTOCOL " Sayfanın talep edildiği bilgi protokolünün adı ve sürümü; Örneğin " HTTP/1.0"; " REQUEST_METHOD " Sayfayı istemek için hangi yöntem kullanıldı; örneğin " ELDE ETMEK", "KAFA", "POSTALAMAK", "KOYMAK".

Not:

İstek, yöntem kullanılarak yapıldıysa, PHP betiği, başlıkları gönderdikten sonra (yani, çıktıyı ara belleğe almadan herhangi bir çıktı gerçekleştirdikten sonra) çıkar. KAFA.

"REQUEST_TIME" İsteğin başlangıcına ilişkin zaman damgası. PHP 5.1.0'dan itibaren kullanılabilir. " REQUEST_TIME_FLOAT " İsteğin başlangıcına ilişkin mikrosaniye düzeyinde doğru zaman damgası. PHP 5.4.0'dan itibaren kullanılabilir. " QUERY_STRING " Varsa sayfayı alan sorgu dizesi. " DOCUMENT_ROOT " Geçerli betiğin yürütüldüğü belge kök dizini tam olarak şurada belirtilen dizindir yapılandırma dosyası sunucu. " HTTP_ACCEPT " Başlık içeriği Kabul etmek: mevcut istekten, eğer varsa. " HTTP_ACCEPT_CHARSET " Başlık içeriği Kabul-Karakter Seti: mevcut istekten, eğer varsa. Örneğin: " iso-8859-1,*,utf-8"." HTTP_ACCEPT_ENCODING " Başlık İçeriği Kabul-Kodlama: gzip"." HTTP_ACCEPT_LANGUAGE " Başlık İçeriği Kabul-Dil: mevcut istekten, eğer varsa. Örneğin: " tr"." HTTP_CONNECTION " Başlık İçeriği Bağlantı: mevcut istekten, eğer varsa. Örneğin: " Hayatta kal"." HTTP_HOST " Başlık İçeriği Ev sahibi: mevcut istekten, eğer varsa. " HTTP_REFERER " Kullanıcının tarayıcısını bu sayfaya getiren sayfanın (varsa) adresi. Bu başlık kullanıcının web tarayıcısı tarafından ayarlanır. Tüm tarayıcılar bunu yüklemez ve bazıları ek bir özellik olarak HTTP_REFERER başlığının içeriğini değiştirmenize izin verir. Tek kelimeyle ona gerçekten güvenilemez. " HTTP_USER_AGENT " Başlık içeriği Kullanıcı Aracısı: mevcut istekten, eğer varsa. Bu satır kullanıcının istekte bulunduğu tarayıcıyı içerir bu sayfa. Tipik bir örnek şu satırdır: Mozilla/4.5 (X11; U; Linux 2.2.9 i586) . Diğer şeylerin yanı sıra, sayfanızın çıktısını kullanıcının tarayıcı özelliklerine göre uyarlamak için bu değeri get_browser() işleviyle birlikte kullanabilirsiniz. " HTTPS " İstek HTTPS protokolü aracılığıyla yapıldıysa boş olmayan bir değeri kabul eder.

Not: Lütfen ISAPI'yi IIS ile kullanırken değerin şu şekilde olacağını unutmayın: kapalı, istek HTTPS aracılığıyla yapılmadıysa.

Kullanıcının geçerli sayfayı görüntülediği "REMOTE_ADDR" IP adresi. "REMOTE_HOST" Kullanıcının geçerli sayfayı görüntülediği uzak ana bilgisayar. Ters DNS araması REMOTE_ADDR değişkeninin değerine dayanır.

Not: Web sunucunuzun bu değişkeni oluşturacak şekilde yapılandırılmış olması gerekir. Örneğin Apache'de direktifin varlığına ihtiyacınız var Ana Bilgisayar Adı Aramaları Açık Bu değişkenin oluşturulması için httpd.conf dosyasında. Ayrıca bkz. gethostbyaddr() .

"REMOTE_PORT" Web sunucusuyla iletişim kurmak için kullanılan uzak makinedeki bağlantı noktası. "REMOTE_USER" Kimliği doğrulanmış kullanıcı. " REDIRECT_REMOTE_USER " İsteğin dahili olarak yeniden yönlendirilmesi durumunda kimliği doğrulanan kullanıcı. "SCRIPT_DOSYAADI"

İçinde bulunan betiğin mutlak yolu şu an gerçekleştiriliyor.

Not:

Betik, file.php veya ../file.php gibi göreli bir yol kullanılarak komut satırında (CLI) çalıştırılıyorsa, $_SERVER["SCRIPT_FILENAME"] değişkeni kullanıcı tarafından belirtilen göreli yolu içerecektir.

" SERVER_ADMIN " Bu değişken değerini (Apache için) sunucu yapılandırma dosyasındaki bir yönergeden alır. Betik bir sanal konakta çalışıyorsa bu, o sanal konak için tanımlanan değer olacaktır. " SERVER_PORT " Web sunucusunun bağlanmak için kullandığı sunucu bilgisayardaki bağlantı noktası. Varsayılan ayarlar için değer " 80 "; örneğin SLL kullanıldığında bu değer güvenli HTTP bağlantıları için yapılandırıldığı gibi olacaktır.

Not: Apache 2'de fiziksel (gerçek) bir bağlantı noktası elde etmek için yüklemeniz gerekir. UseCanonicalName = Açık Ve UseCanonicalPhysicalPort = Açık aksi takdirde bu değer değiştirilebilir ve fiziksel bağlantı noktasının gerçek değerini döndürmeyebilir. Gelişmiş güvenlik gerektiren uygulamalar bağlamında bu değere güvenmek güvenli değildir.

" SERVER_SIGNATURE " Etkinleştirilirse sunucu tarafından oluşturulan sayfalara eklenen, sunucu sürümünü ve sanal ana bilgisayar adını içeren bir dize. " PATH_TRANSLATED " Sunucu herhangi bir sanaldan gerçeğe eşleme yaptıktan sonra geçerli komut dosyasının dosya sistemi (belge kökü değil) tabanlı yolu.

Not: PHP 4.3.2'den itibaren PATH_TRANSLATED değişkeni, Apache tarafından kullanılmadığında SCRIPT_FILENAME değişkeniyle aynı değere ayarlandığı Apache sürüm 1'e kıyasla artık Apache 2 SAPI'de örtülü olarak ayarlanmamaktadır. Bu değişiklik, PATH_TRANSLATED değişkeninin yalnızca PATH_INFO tanımlandığında mevcut olması gereken CGI spesifikasyonuna uymak için yapıldı. Apache 2 kullanıcıları yönergeyi kullanabilir AcceptPathInfo = Açık PATH_INFO değişkenini ayarlamak için httpd.conf yapılandırma dosyasında.

"SCRIPT_NAME" Şu anda yürütülen komut dosyasının yolunu içerir. Bu, kendilerine işaret etmesi gereken sayfalar için kullanışlıdır. __FILE__ sabiti geçerli (yani dahil edilen) dosyanın tam yolunu ve adını içerir. " REQUEST_URI " Bu sayfaya erişmek için iletilen URI. Örneğin, " /index.html"." PHP_AUTH_DIGEST " HTTP Digest kimlik doğrulaması gerçekleştirilirken, bu değişkene istemci tarafından gönderilen "Yetkilendirme" başlığı atanır (bu daha sonra uygun doğrulama için kullanılmalıdır). " PHP_AUTH_USER " HTTP kimlik doğrulaması gerçekleştirildiğinde, bu değişken atanır kullanıcı tarafından sağlanan kullanıcı adı. " PHP_AUTH_PW " HTTP kimlik doğrulaması gerçekleştirildiğinde, bu değişken kullanıcı tarafından sağlanan parolaya ayarlanır. " AUTH_TYPE " HTTP kimlik doğrulaması gerçekleştirildiğinde, bu değişken, kullanılan kimlik doğrulama türüne ayarlanır " PATH_INFO. " Komut dosyası adından sonra yer alan, ancak varsa sorgu dizesine giden, kullanıcı tarafından sağlanan herhangi bir yolu içerir. Örneğin, geçerli komut dosyası http://www.example.com/php/path_info.php/ URL'si tarafından isteniyorsa some/stuff?foo=bar ise, $_SERVER["PATH_INFO"] değişkeni şunları içerecektir: /bazı şeyler?>

Bu örneği çalıştırmanın sonucu şuna benzer olacaktır.

  • Tercüme
  • öğretici

PHP 5.4'teki en harika yeniliklerden biri, özellikle geliştirme ve test için oluşturulmuş yerleşik sunucudur. Artık tam bir web sunucusuna sahip olmadan kodunuzu yazıp test edebilirsiniz; yerleşik sunucuyu başlatmanız, kodunuzu test etmeniz ve işiniz bittiğinde kapatmanız yeterlidir.
Sunucu aynı zamanda yaratıcı kullanım olanağı da sağlar. Örneğin, taşınabilir bir web uygulamasını CD veya USB üzerinde, hatta GTK veya diğer grafik kitaplıklarını kullanmadan PHP'de yerleşik bir masaüstü uygulaması olarak dağıtabilirsiniz.

PHP kılavuzu, yerleşik sunucunun geliştirme amaçlı olduğunu ve üretim sunucusunda kullanılmamasının önerildiğini vurgulamaktadır. Sunucudan sorumlu hiçbir INI yönergesi yoktur (konsoldaki çıktının renklendirilmesi hariç) ve belgelerin ana fikri şu gibi görünmektedir: “artık ayrıca Web sunucusu, bizi yalnız bırak."
Buna rağmen gömülü bir sunucunun geliştirme ve test için değerli bir araç olabileceğine inanıyorum. Örneğin, makinemde Apache'yi bana uygun özel bir konfigürasyonla önceden yüklenmiş olarak kullanıyorum, ancak bazen bazı yeni Web uygulamalarını denemek istiyorum. Yerleşik bir web sunucusuyla uygulamayı doğrudan indirilenler veya geçici klasörden test edebilir ve yalnızca gerektiğinde normal ortama taşıyabilirim.
Ancak başlangıçta bu o kadar basit değil çünkü birçok yazılı uygulama .htaccess ve mod_rewrite kullanıyor. Ama eminim birisi (belki sizden biri, neden olmasın?) bunun için bir adaptör yazacaktır ve bunu ilk test eden ben olmak isterim.
Bu makalede, yerleşik sunucunun bazı temel kullanımlarını açıklayacağım ve geliştirme ve test için onu nasıl faydalı hale getirebileceğinizi göstereceğim.

Yerleşik sunucuyu kullanıyoruz Bu nedenle, sunucuyu kullanmak için PHP 5.4 veya daha yüksek bir sürüme ihtiyacımız var. PHP sürümünü kontrol etmek için şunu çalıştırın:
php -v
Ayrıca aşağıdakileri çalıştırarak sunucunun yapınızda mevcut olup olmadığını da belirleyebilirsiniz:
php -h
ve burada yalnızca sunucu için kullanılan "-S" ve "-t" parametrelerinin açıklamasını bulabilirsiniz.
Sunucuyu test etmek için geçerli dizinde phpinfo() işlevine yapılan bir çağrıyı içerecek bir index.php dosyası oluşturabilir ve ardından sunucuyu başlatabilirsiniz:
$ php -S 127.0.0.1:8080 PHP 5.4.0RC7 Geliştirme Sunucusu 26 Şubat 18:49:29 2012'de başladı 127.0.0.1:8080'de dinleniyor Belge kökü /home/ec2-user Çıkmak için Ctrl-C tuşlarına basın.
Artık yerleşik web sunucusunun sağladığı içerikleri görebilirsiniz:

Her istemci isteği konsola yazılacaktır:
80.180.55.37:36318 : / 80.180.55.37:36584 : /
Geri dönersek, sunucuya erişilebilecek adresi belirtmek için kullanılan "-S" komut satırı parametresine bakalım. Olası değerler:
localhost - sunucuya yalnızca yerel makineden erişilebilecektir,
0.0.0.0 - herhangi bir makine arayüzünde,
Herhangi bir harici veya gri IP - yalnızca belirtilen IP'de
"-t" seçeneği belirtilen dizini "dizin kökü" olarak ayarlar. Örneğin:
$ php -S :8090 -t /home/ec2-user/public
Ayrıca,. belirli bir yönlendirici dosyasının adını belirleyebilirsiniz. Örneğin:
$ php -S >localhost veya genel IP'niz>:8080 -t /home/ec2-user/public public/index.php
Bu yönlendiricinin çıktısı sunucu tarafından ayrıştırılacak ve yürütülecektir. Basit örnek: