Php 如何区分环境是否为虚拟主机?
我这里有这个代码:Php 如何区分环境是否为虚拟主机?,php,environment-variables,virtualhost,superglobals,Php,Environment Variables,Virtualhost,Superglobals,我这里有这个代码: $config['SUBFOLDER'] = '/'; $config['APP_URL'] = 'http://'.$_SERVER['HTTP_HOST'].$config['SUBFOLDER']; 整个HTML模板都使用APP_URL。问题是-配置需要尽可能通用,因此切换环境时需要做的事情更少 现在,当我为我的项目配置了一个虚拟主机,但它不是一个虚拟主机,而是一个localhost/myproject/-必须手动将$config['SUBFOLDER']设置为/my
$config['SUBFOLDER'] = '/';
$config['APP_URL'] = 'http://'.$_SERVER['HTTP_HOST'].$config['SUBFOLDER'];
整个HTML模板都使用APP_URL。问题是-配置需要尽可能通用,因此切换环境时需要做的事情更少
现在,当我为我的项目配置了一个虚拟主机,但它不是一个虚拟主机,而是一个localhost/myproject/-必须手动将$config['SUBFOLDER']设置为/myproject时,它是这样工作的/
如何以编程方式执行此操作?检查URL是否包含LOCALHOST或普通域名,并根据URL的内容将配置包装在条件中。您可以在例如htaccess文件中设置变量
#.htccess
SetEnv APPLICATION_ENV development
然后在您的网站上检查:
<?php
//live
$config['SUBFOLDER'] = '/';
//on localhost - override live settings
if(APPLICATION_ENV === 'development')
{
$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'];
}
我试着检查HTTP_HOST是否为localhost,但如何以编程方式获取localhost之后的值,即/myproject/?我尝试使用$\u服务器['REQUEST\u URI'],但这仅适用于索引页。如果您浏览到,则
echo$\u服务器['REQUEST\u URI']代码>应显示/myproject/some-page.html。试试$parts=explode('/',$服务器['REQUEST\u URI']);echo$零件[1]代码>。你应该得到“我的项目”。
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'];
}