Условная конфигурация: как определить, локально я или онлайн? - PullRequest
1 голос
/ 10 января 2010

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

Я немного помню пару лет назад, фрагмент кода как-то автоматически различал онлайновую и локальную разработку.

Есть ли безопасный способ обнаружить это?

Ответы [ 5 ]

4 голосов
/ 10 января 2010

Я обычно использую имя сервера для этого; например, вот что я использую в своем блоге:

if ($_SERVER['SERVER_NAME'] === 'blog') {
    // Development
} else {
    // Production
}

Это потому что:

  • На моей машине для разработки доступ к блогу осуществляется через http://blog (больше ничего после) с использованием VirtualHost с директивой ServerName.
  • На производственном сервере, конечно, директива ServerName немного длиннее, чем фактическое имя сервера блога.
2 голосов
/ 05 мая 2013

У меня есть эта функция, которая проверяет, имеет ли текущее имя сервера имя сервера записей, обычно локальный сервер не имеет.

<?php
function isLocal ()
{
  return !checkdnsrr($_SERVER['SERVER_NAME'], 'NS');
}
?>
1 голос
/ 10 января 2010

Мой ответ в основном такой же, как у Паскаля на этой странице, но, поскольку вы можете изменить имя своего сервера разработки и вам может потребоваться несколько таких проверок в вашем коде, я предпочитаю делать это:

define ('DEV_HOST', 'blog'); // if you just use http://blog locally

А затем проверьте

if ($_SERVER['SERVER_NAME'] == DEV_HOST) {
  // do your tricks
}
1 голос
/ 10 января 2010

Другой подход: настройте файл .htacces в корне разработки:

SetEnv APPLICATION_ENV development

Тогда прочитайте это:

defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV')
                                    ? getenv('APPLICATION_ENV')
                                    : 'production'));
0 голосов
/ 10 января 2010

Вот решение, которое требует нулевой конфигурации и должно работать довольно быстро:

function isOnline()
{
    return checkdnsrr('google.com', 'ANY');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...