localhost / live – обнаружение по HTTP_HOST

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

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

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

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

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

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

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

Solutions Collecting From Web of "localhost / live – обнаружение по HTTP_HOST"

Ничего плохого в том, чтобы делать то, что вы делаете.

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

Под 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'; 

Или что-то вдоль этих линий.

ИМХО, то, что ты делаешь, не так уж плохо.

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

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

Это может быть оценено в TRUE для сайта, например localhostIsAwesome.com .

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

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

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

  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 также игнорирует файл по соображениям безопасности.

просто мои два цента.