Как проверить, работает ли PHP-скрипт на локальном сервере?

можно ли проверить, работает ли веб-сайт (php) локально или на размещенном сервере? Я хочу включить некоторые журналы, если веб-сайт работает локально, и я не хочу, чтобы они появлялись на сайте в интернете.. Я могу установить переменную $local=1; но мне придется изменить это перед загрузкой.. есть ли вообще автоматизировать эту задачу?

Локальный Сервер: WampServer 2.0 / Apache Веб-Сервер: Apache

5 ответов


Регистрация $_SERVER['REMOTE_ADDR']=='127.0.0.1'. Это будет верно только при локальном запуске. Имейте в виду, что это также означает локальный сервер. Поэтому, если на сервере запущены какие-либо скрипты, которые делают запросы на ваши PHP-страницы, они также удовлетворят этому условию.


вы должны автоматизировать развертывание

Это не прямой ответ на ваш вопрос, но на мой взгляд в лучшую сторону. В процессе автоматического развертывания установите переменную, например $local = true, как и другие значения конфигурации (например, ваше db-соединение), не будет ручным, подверженным ошибкам, задачей.

проверка на "локальность", на мой взгляд, неправильный способ: вы не хотите показывать свои журналы каждому локальному посетителю (прокси может быть один), но только при развертывании в тестовой среде.

популярным инструментом автоматического развертывания является Капистрано, также должны быть PHP-ориентированные инструменты.


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

function is_local() {
    if($_SERVER['HTTP_HOST'] == 'localhost'
        || substr($_SERVER['HTTP_HOST'],0,3) == '10.'
        || substr($_SERVER['HTTP_HOST'],0,7) == '192.168') return true;
    return false;
}

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

<?php
function isLocal ()
{
  return !checkdnsrr($_SERVER['SERVER_NAME'], 'NS');
}
?>

$whitelist = array(
    '127.0.0.1',
    '::1'
);

if(!in_array($_SERVER['REMOTE_ADDR'], $whitelist)){
    // not valid
}