PHP получить доменное имя
Возможный дубликат:
HTTP_HOST и SERVER_NAME
Здравствуйте,
Я хочу получить доменное имя, где работает script. Как это можно сделать с PHP?
Я вижу, что $_SERVER['HTTP_HOST']
, а также $_SERVER['SERVER_NAME']
содержат эту информацию.
Будет ли эта переменная работать всегда, и я должен использовать ее над другой?
Спасибо.
Ответы
Ответ 1
Аналогичный вопрос задан в stackoverflow раньше.
Смотрите здесь: PHP $_SERVER ['HTTP_HOST'] против $_SERVER ['SERVER_NAME'], правильно ли я понимаю страницы man?
Также см. эту статью: http://shiflett.org/blog/2006/mar/server-name-versus-http-host
Рекомендуется использовать HTTP_HOST и возврат к SERVER_NAME только в том случае, если HTTP_HOST не был установлен. Он сказал, что SERVER_NAME может быть ненадежным на сервер по разным причинам, в том числе:
- поддержка DNS
- неправильно настроена
- программное обеспечение для балансировки нагрузки
Источник: http://discussion.dreamhost.com/thread-4388.html
Ответ 2
Чтобы ответить на ваш вопрос, они должны работать до тех пор, пока:
- Ваш HTTP-сервер передает эти значения вместе с PHP (я не знаю, кто этого не делает)
- не доступ к script через командную строку (CLI)
Но, если я правильно помню, эти значения могут быть подделаны до такой степени, поэтому лучше не полагаться на них.
Мое личное предпочтение заключается в установить имя домена как переменную среды в виртуальном хосте apache2:
# Virtual host
setEnv DOMAIN_NAME example.com
И прочитайте его в PHP:
// PHP
echo getenv(DOMAIN_NAME);
Это, однако, не применимо ни при каких обстоятельствах.