Подтвердить что ты не робот

Как мы можем проверить, запущен ли PHP скрипт на localhost?

Есть ли способ проверить, запущен ли PHP script на локальном сервере - сервере разработки или на сервере с сервером на сервере? Есть ли какая-либо постоянная PHP, переменная, функция и т.д., Которые могут дать мне эту информацию.

Мне нужно это, чтобы установить разные настройки для сервера производства и разработки. Теперь я разбираю URL-адрес, чтобы узнать, какой он есть, но мне было интересно, есть ли лучший способ сделать это. Меня беспокоит то, что мы можем изменить URL-адрес script и это может испортить мой чек.

Я ищу несколько решений с одним конфигурационным файлом и условием IF в нем, в зависимости от которого я буду определять разные настройки. Единственная проблема заключается в том, что я не хочу изменять оператор IF, когда есть изменения в настройках сервера, такие как имя хоста, document_root или что-то еще, что я использую для идентификации локального/удаленного хоста.

И хочу обновить SVN из одного источника без изменения чего-либо на моем рабочем сервере.

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

4b9b3361

Ответ 1

Я использую SetEnv в определении моего хоста для определения того, в какой среде я запускаю (Dev, Stage, Production):

<VirtualHost *:80>
(all the host info)
SetEnv SERVER_CONTEXT "dev"
</VirtualHost>

И каждый конфигурационный файл в качестве дополнительного слова в нем: config.dev.ini, config.stage.ini, config.prod.ini и т.д.,... Он работает как шарм.

Ответ 2

if($_SERVER["REMOTE_ADDR"]=="127.0.0.1"){
$local = True;
}else{

    $local = False;
}

ИЗМЕНИТЬ

Вы также можете проверить первую часть адреса и посмотреть, находится ли сервер в локальной сети, опять же, если ваш сервер не будет находиться в локальной сети при производстве

Ответ 3

Я установил переменную среды в настройке Apache и проверил ее. Это имеет преимущество перед использованием файла конфигурации PHP, что весь ваш код приложения остается точно таким же в PROD, TEST, DEV и т.д.; не нужно идти и вносить изменения после проверки, так как код просто извлекает конфигурацию из Apache.

Чтобы продемонстрировать, в настройке VirtualHost можно установить следующее:

SetEnv ENVIRONMENT PROD

В вашем PHP-коде вы можете проверить среду с помощью

$env = getenv('ENVIRONMENT');

Если вы чувствуете необходимость сделать это доступным во всем мире, вы можете использовать define, но я не считаю это необходимым (я использую указанную среду для загрузки соответствующих файлов конфигурации и создания конфигурации Singleton для чтения, который затем используется для проверки любых параметров конфигурации, лучше, чем код типа if ($env == 'PROD') {}, так как вся эта логика находится в конфиге, а не в вашем коде).

Ответ 4

Используйте конфигурационный файл, который вы включаете, с определением в нем

define("DEBUG",true); //set to false for live

и используйте это в своем коде, например:

if(DEBUG){}

Ответ 5

Сервер не знает, в какой среде он находится, если вы не скажете об этом. Для настройки среды я использую DEFINE. Мой код приложения одинаковый для каждого экземпляра, но мои файлы конфигурации меняются. Таким образом, вы можете использовать файл .htaccess, включая файлы конфигурации на каждом script и проверить, что они представляют собой настройки.

Ответ 6

Вы можете попробовать и использовать глобальный $_SERVER ['SERVER_NAME']: http://www.php.net/manual/en/reserved.variables.server.php Это должно указывать имя хоста системы что работает script. Вы можете использовать это, чтобы определить, какие настройки использовать (в зависимости от системы).

Я не знаю, что это будет выводить "localhost", однако вам может понадобиться знать ваше фактическое имя хоста вашей машины разработки.

Ответ 7

Я знаю, что это слово может показаться странным для PHP-разработчика, но считали ли вы сборку вашего проекта?

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

Ответ 8

Я всегда делаю "config.php", который я включаю в другие php файлы...

содержит что-то вроде (домашний файл):

$CONFIG['server']="dev";
$CONFIG['db_user']="root";

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

так что на сервере у меня есть что-то вроде:

$CONFIG['server']="prod";
$CONFIG['db_user']="lwu9918_admin";

а затем в других файлах php:

include("config.php");
if($CONFIG['server']=="dev"){echo "Development";}

вещь такая!

Ответ 9

В dev-сервере

* * * * * php -r cronjob.php this_is_dev

На рабочем сервере

* * * * * php -r cronjob.php this_is_live

В script

switch ($argv[1])
  case 'this_is_dev':
    // load your dev configuration
    break;

  case 'this_is_live':
    // load your live configuration
    break;

  default:
    die('invalid server');
    break;
}

поскольку он предназначен для cronjob, существует $argv

удачи в Windows: (

Ответ 10

лучше поставить программу cli за пределами www-каталога, например

c:\iis\www - общедоступный каталог html

файл cli должен быть помещен под c:\iis вместо