ФорумПрограммированиеPHP для идиотов → Как определить, в какой среде выполняется скрипт ?

Как определить, в какой среде выполняется скрипт ?

  • AndryG

    Сообщения: 237 Репутация: N Группа: Адекваты

    Spritz 9 сентября 2010 г. 17:05

    Доброго.
    Скрипт может выполнятся на различных хостах как из-под Apache, так и консольно (крон).
    Как узнать, на каком именно хосте он запущен.
    С Апачем проблем нет $_SERVER['SERVER_NAME'] всё говорит.

    А как идентифицировать компьютер при консольном запуске ?
    И учесть, что на компах могут быть разные OS (win/*nix)
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 9 сентября 2010 г. 17:48, спустя 43 минуты 34 секунды

    хз как "поправилам", но я определял вот так

    if (@$_SERVER['REMOTE_ADDR'])
    echo "<pre>";
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 9 сентября 2010 г. 18:08, спустя 19 минут 54 секунды

    пусть адрес сайта у нас в конфиге забит
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 9 сентября 2010 г. 18:11, спустя 2 минуты 51 секунду

    (win/*nix)

    DIRECTORY_SEPARATOR в системах разный)
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 9 сентября 2010 г. 18:13, спустя 1 минуту 45 секунд

    ну определить как запускается php_sapi поможет. Но тут идентефецировать комп нужно
  • AndryG

    Сообщения: 237 Репутация: N Группа: Адекваты

    Spritz 9 сентября 2010 г. 21:53, спустя 3 часа 40 минут 18 секунд

    Абырвалг, верно. Мне мне надо узнать, что за комп и в зависимости от этого дальше вертится алгоритм. (отладочные приблуды на тестовых серверах, которые автоматом отключаются на продакшине)
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 9 сентября 2010 г. 22:05, спустя 12 минут 33 секунды

    у тебя может такая проверка стоять в инициализационном скрипте:

    if (!defined('SITE_ENV')) {
    define('SITE_ENV', (
    is_int(stripos($_SERVER['HTTP_HOST'], '.localhost')) ||
    is_int(stripos($_SERVER['HTTP_HOST'], 'dev.'))) ? 'dev' : 'prod'
    );
    }

    dev.site.ru // dev
    site.localhost // dev
    site.ru // prod
    это опять-таки не для CLI. Но с другой стороны: в режиме CLI тебе ваще не по хую ли, включена отладка или нет? Через CLI только одмин или программер может обращаться, так сделай отладку всегда включенной в этом режиме
  • AndryG

    Сообщения: 237 Репутация: N Группа: Адекваты

    Spritz 9 сентября 2010 г. 23:27, спустя 1 час 21 минуту 37 секунд

    Но с другой стороны:…
    в том и проблема. Для cli надо различать … для кроновских скриптов.
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 9 сентября 2010 г. 23:29, спустя 1 минуту 46 секунд

    запускай по крону их с каким-то параметром

    /usr/bin/php -f foo/bar.php -nodebug
  • AndryG

    Сообщения: 237 Репутация: N Группа: Адекваты

    Spritz 10 сентября 2010 г. 11:28, спустя 11 часов 59 минут 31 секунду

    Абырвалг, тоже ничего лучшего не придумал, как для cli - скриптов использовать параметр :(
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 10 сентября 2010 г. 11:33, спустя 4 минуты 25 секунд

    спроси на стековерфлоу
    Спустя 27 сек.
    http://stackoverflow.com/

Пожалуйста, авторизуйтесь, чтобы написать комментарий!