Где находится сценарий? Локальный хост или на Сервере? - PullRequest
1 голос
/ 20 ноября 2010

Как и у многих программистов, у меня есть сервер, на котором я размещаю свои скрипты, и локальный хост, на котором я их создаю. Есть ли в PHP безопасный способ, позволяющий сценарию определить разницу между ними? SERVER_NAME работает, но может быть введен, поэтому не является безопасным . У кого-нибудь есть решение? (Нестатическое решение предпочтительно)

Ответы [ 6 ]

2 голосов
/ 20 ноября 2010

Вы можете использовать php_uname('n'), чтобы вернуть имя текущего хоста, и использовать его, чтобы решить, в какой среде вы находитесь, но это не дает больших преимуществ, чем простое определение вашей среды вКонфигурационный файлВы должны сделать это только один раз для каждой установки.

Я лично считаю, что самый простой способ - определить символ ENVIRONMENT как 'development', 'testing' или 'production' в файле конфигурации, который исключениз контроля версий.Я включаю этот файл в какую-то часть моего проекта, а затем assert, который определен символ ENVIRONMENT.Программа будет работать, если я извлек копию своего проекта и забыл создать файл конфигурации или указать среду внутри него.

Вы можете объединить эти подходы, чтобы определить ENVIRONMENT на основе имени хоста.

0 голосов
/ 20 ноября 2010

Поскольку мои пути разработки и производства всегда различаются, я обычно склонен проверять dirname(__FILE__) на наличие множества возможных значений.

В зависимости от того, какое значение я получу, будет загружен правильный файл конфигурации.

0 голосов
/ 20 ноября 2010

создать файл где-нибудь из www. сделать, если (file_exists ('ПУТЬ ВАШЕГО ФАЙЛА')) ...

дать ему странное имя. в c: \ if ur на windows или в / usr / home /, если вы на linux

0 голосов
/ 20 ноября 2010

это работает для меня

if ($_SERVER['HTTP_HOST'] == 'localhost')
{
   // it is  local host
}
0 голосов
/ 20 ноября 2010

Обычно в Apache каждый VirtualHost будет иметь определенный набор имен хостов и псевдонимов, определенных для него.Это имя, которое вы получите из $ _SERVER ['HTTP_HOST'], и, по сути, это данные из заголовка Host: HTTP

Единственный раз, когда вам могут понадобиться дополнительные проверки, это когда ваш vhost используется по умолчанию.vhost, и поэтому поля запрашивают домены, не связанные с хостами vhosts, или ваш vhost использует подстановочные знаки для ServerName или ServerAlias ​​.

0 голосов
/ 20 ноября 2010

Я, как правило, проверяю IP $_SERVER['SERVER_ADDR'], или просто настройки конфигурации указывают, какой именно ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...