Как определить, является ли среда виртуальным хостом или нет?
У меня есть этот код здесь:
$config['SUBFOLDER'] = '/';
$config['APP_URL'] = 'http://'.$_SERVER['HTTP_HOST'].$config['SUBFOLDER'];
И APP_URL используется во всех шаблонах HTML. Проблема в том, что конфигурация должна быть настолько универсальной, насколько это возможно, поэтому при переключении среды нужно делать меньше.
Теперь, это работает так, когда я настроил виртуальный хост для своего проекта, но когда это не виртуальный хост, а своего рода localhost/myproject/ - $config['SUBFOLDER'] нужно вручную установить на /мой проект/
Как мне сделать это программно?
3 ответа
Вы можете установить переменную, например, в своем файле htaccess.
#.htccess
SetEnv APPLICATION_ENV development
Затем на вашем сайте сделайте проверку для этого:
<?php
//live
$config['SUBFOLDER'] = '/';
//on localhost - override live settings
if(APPLICATION_ENV === 'development')
{
$config['SUBFOLDER'] = '/myproject';
}
При таком подходе вам нужно изменить только одну переменную в файле htaccess.
Если вы просто хотите проверить, работаете ли вы на локальном хосте, проверьте $_SERVER['HTTP_HOST']
также будет работать:
<?php
if($_SERVER['HTTP_HOST'] === 'localhost')
{
$config['SUBFOLDER'] = '/myproject';
}
Я беру немного другой подход..
if ($_SERVER['HTTP_HOST'] == 'testingserver') // local environment here
{
// local settings
}
else if ( // remote environment here
$_SERVER['HTTP_HOST'] == 'www.something.com' ||
$_SERVER['HTTP_HOST'] == 'something.com'
)
{
// remote settings
}
else // error.. this shouldn't happen
{
echo $_SERVER['HTTP_HOST'];
}
Проверьте URL-адрес, содержит ли он LOCALHOST или обычное доменное имя, и оберните вашу конфигурацию условно в зависимости от того, какой URL-адрес.