2011-03-23 37 views
69

Olası Çoğalt:PHP olsun alanı adı

Merhaba
HTTP_HOST vs. SERVER_NAME

,

Senaryonun yayınlanmakta olduğu için etki alanı adını almak istiyorum. PHP ile nasıl yapılabilir? $_SERVER['HTTP_HOST'] ve $_SERVER['SERVER_NAME']'un bu bilgileri içerdiğini görüyorum. Bu değişken her zaman çalışır mı ve diğeri üzerinde kullanmalı mıyım?

Teşekkür ederiz.

+0

Bu, SERVER_NAME ürününün kullanımıyla ilgili sorumu yanıtlıyor, ancak bunu PHP'de yapmanın doğru yolu bu mu? (diğer bölüm) Teşekkür ederim. – Francisc

cevap

74

Benzer soru stackoverflow'ta daha önce sorulmuştur.

Buraya bakın: PHP $_SERVER['HTTP_HOST'] vs. $_SERVER['SERVER_NAME'], am I understanding the man pages correctly?

Ayrıca, bu makaleye bakın: http://shiflett.org/blog/2006/mar/server-name-versus-http-host HTTP_HOST kullanılarak Önerilen

ve HTTP_HOST set lemediyseniz SERVER_NAME geri düşüyor. O da dahil olmak üzere , SERVER_NAME çeşitli nedenlerle için sunucuda güvenilmez olabileceğini söyledi:

  • yük dengeleme yazılım

Kaynak arkasında

  • yanlış yapılandırılmış hiçbir DNS desteği : http://discussion.dreamhost.com/thread-4388.html

  • +0

    HTTP_HOST bana uygun görünüyor. SERVER_NAME, Docker kullanmaya başlayana kadar iyi çalıştı, ardından bize "localhost" u verdi. Sadece HTTP_HOST'un size alt alanı vereceğini unutmayın. –

    7

    soru bu sürece çalışmalıdır cevaplamak için:

    • Kişisel HTTP sunucusu PHP boyunca bu değerleri geçer '
    • You (bende olmayan herhangi bilmiyorum) komut satırından (CLI)

    Ama yanlış hatırlamıyorsam onlara güvenmek en iyisidir böylece bu değerler, bir ölçüde sahte olabilir aracılığı senaryoyu erişen değil yeniden.

    Benim kişisel tercihi apache2 sanal konakta set the domain name as an environment variable şudur:

    # Virtual host 
    setEnv DOMAIN_NAME example.com 
    

    Ve read it in PHP:

    // PHP 
    echo getenv(DOMAIN_NAME); 
    

    Ancak bu, her durumda geçerli değildir.