Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何区分环境是否为虚拟主机?_Php_Environment Variables_Virtualhost_Superglobals - Fatal编程技术网

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']; 
}