Определите, работает ли текущий скрипт на сервере разработки или производственном сервере - PullRequest
1 голос
/ 25 января 2011

У меня есть сценарии, которые вызывают разные URL-адреса в зависимости от того, обрабатываются ли они моим онлайн-сайтом (релиз) или моим оффлайн-хостом (разработка).Я хотел бы найти быстрый способ выяснить, какой именно.

Я могу придумать несколько неуклюжих способов сделать это, но есть ли определенный, быстрый, элегантный метод?Что-то вроде if(is_offline()) { ... }

Ответы [ 5 ]

7 голосов
/ 25 января 2011
  1. На серверах IIS доступна переменная с именем $_SERVER["COMPUTERNAME"], с помощью которой можно определить, работает ли сценарий на вашем сервере разработки или на производственном сервере ( MYMACHINE против WWW37 ).

  2. Вы также можете использовать $_SERVER["HTTP_HOST"] переменную ( localhost против www.domain.com ),

  3. Вы также можете создать пустой текстовый файл на своем сервере разработки (старайтесь не загружать его) и использовать is_file(), чтобы проверить его наличие (is_file (". Foo") == true против false ).

  4. Вы можете проверить PHP_OS, если операционные системы на двух серверах различаются (WINNT против Linux ).

  5. Вы можете проверить наличие определенного пути внутри константы __FILE__ ( C: / inetpub/ wwwroot / website / против / home / www37 / ).

  6. Вариант 3: @include("override_server_with_local_config.php");

3 голосов
/ 25 января 2011

Лучший способ - установить переменную конфигурации где-нибудь, которая указывает production или development.

Вы можете сделать это по имени хоста (localhost против www.foobar.com), но это неудачное решение. Вы также можете получить доступ к своему приложению, используя разные имена хостов для тестирования. Следовательно, явное лучше, чем неявное.

3 голосов
/ 25 января 2011

Вы можете посмотреть на $_SERVER['HTTP_HOST'], чтобы увидеть, под каким именем хоста работает скрипт.

Вы можете посмотреть на $_SERVER['REMOTE_ADDR'], чтобы узнать, является ли пользователь, запрашивающий IP-адрес страницы, 127.0.0.1.

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

Вы можете определить константу в начале вашего кода, которую вы установили для «выпуска» или «разработки» всоответствующая машина.

0 голосов
/ 13 ноября 2012

пара проверок может сделать возможным

define('IS_LOCAL', !(
  in_array($_SERVER['HTTP_HOST'], array('localhost','127.0.0.1')) === false &&
  $_SERVER['REMOTE_ADDR'] !== '127.0.0.1' &&
  $_SERVER['REMOTE_ADDR'] !== '::1'
));
0 голосов
/ 25 января 2011

Одна функция может помочь get_headers('URL').

get_headers

Tt выбирает все заголовки, отправленные сервером. Проверьте возвращенный массив, чтобы проверить статус URL. Первый элемент возвращаемого массива содержит статус URL.

...