localhost / live - обнаружение по HTTP_HOST - PullRequest
3 голосов
/ 02 мая 2010

скажем, я разрабатываю локально и отлаживаю мелкие вещи на живом сервере.

Это хорошая идея, чтобы иметь что-то подобное в моем коде? :

$is_local = (strpos($_SERVER['HTTP_HOST'], 'localhost') !== false);
define ('DEBUG',$is_local);

А потом использовать это через мой код, при настройке вещи?

$mysql_settings = (DEBUG) ? 
  array(/*localhost settings*/) : 
  array(/*live settings*/);

Таким образом, я могу использовать одни и те же файлы в реальном времени и на локальном хосте, поэтому я могу синхронизироваться, не опасаясь ошибок, например. настройки соединения на живом сервере.

Это хорошая или неправильная идея?

Ответы [ 3 ]

5 голосов
/ 03 мая 2010

Нет ничего плохого в том, чтобы поступать так, как вы.

Другая стратегия заключается в установке некоторой переменной среды в вашей системе разработки (или другой, непроизводственной) системе.

Под apache вы можете вставить что-то вроде этого:

SetEnv MYAPP_ENVIRONMENT development

в httpd.conf или в подходящем файле .htaccess

Тогда в вашем коде конфигурации:

if (! getenv('MYAPP_ENVIRONMENT')){
  $env = 'production';
}else{
  $env = getenv('MYAPP_ENVIRONMENT"));
}

require_once 'conf/config.' . $env . '.php';

или что-то в этом роде.

2 голосов
/ 02 мая 2010

ИМХО, то, что вы делаете, вовсе не , что плохо.

Единственный недостаток в строке $is_local:

$is_local = (strpos($_SERVER['http_host'], 'localhost') !== false);

Это может быть ИСТИНА для сайта, подобного localhostIsAwesome.com.

В целом, однако, то, как вы делаете это, на самом деле довольно прилично .

Еще одно предложение будет использовать $_SERVER[ 'SERVER_NAME' ]

1 голос
/ 02 мая 2010

это неплохая идея, если

  1. у вас есть только два окружения, локальное и серверное
  2. вам никогда не нужно включать режим отладки для сервера

, поэтому он не относится к сценарию, подобному

  1. несколько сред, таких как dev, test, production
  2. команда из более чем двух разработчиков

Практика, которую я применяю в проекте, состоит в том, чтобы иметь файлы кода настроек, такие как conf.dev.php, conf.test.php, conf.prod.php для различных настроек среды, и один файл для флага переключения env, например

$env = 'production';

, затем вы можете динамически включать файл, содержащий настройки env на основе ключа $ env, например:

require_once 'conf.'.$env.'.php';

не забудьте включить файл conf.dev.php в файл игнорирования git / hg / svn, чтобы он не мешал членам команды, и conf.production.php в файле игнорирования также из соображений безопасности.

только мои два цента.

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