Как проверить, работает ли 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
}