【问题标题】:how to differentiate whether the environment is a virtual host or not?如何区分环境是否是虚拟主机?
【发布时间】:2011-06-23 15:25:25
【问题描述】:

我这里有这段代码:

$config['SUBFOLDER'] = '/';
$config['APP_URL'] = 'http://'.$_SERVER['HTTP_HOST'].$config['SUBFOLDER'];

并且 APP_URL 用于整个 HTML 模板。问题是 - 配置需要尽可能通用,因此在切换环境时要做的事情更少。

现在,当我为我的项目配置了虚拟主机时,它的工作原理是这样的手动设置为 /myproject/

如何以编程方式执行此操作?

【问题讨论】:

    标签: php environment-variables virtualhost superglobals


    【解决方案1】:

    例如,您可以在 htaccess 文件中设置一个变量。

    #.htccess
    SetEnv APPLICATION_ENV development
    

    然后在您的网站上进行检查:

    <?php
    //live
    $config['SUBFOLDER'] = '/';
    //on localhost - override live settings
    if(APPLICATION_ENV === 'development')
    {
      $config['SUBFOLDER'] = '/myproject';
    }
    

    使用这种方法,您只需要更改 htaccess 文件中的一个变量。

    如果你只是想检查你是否在 localhost 上运行,检查 $_SERVER['HTTP_HOST'] 也可以:

    <?php
    if($_SERVER['HTTP_HOST'] === 'localhost')
    {
      $config['SUBFOLDER'] = '/myproject';
    }
    

    【讨论】:

    • 我尝试检查 HTTP_HOST 是否为 localhost,但是如何以编程方式获取 localhost 之后的值,即 /myproject/?我尝试使用 $_SERVER['REQUEST_URI'] 但这仅适用于索引页面。
    • 如果您浏览到localhost/myproject/some-page.html,那么echo $_SERVER['REQUEST_URI']; 应该显示/myproject/some-page.html。试试$parts = explode('/',$_SERVER['REQUEST_URI']); echo $parts[1];。你应该得到'myproject'。
    【解决方案2】:

    检查 URL 是否包含 LOCALHOST 或普通域名,并根据 URL 的内容将您的配置包装在条件中。

    【讨论】:

      【解决方案3】:

      我采取了稍微不同的方法..

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

      【讨论】:

        猜你喜欢
        • 2011-03-22
        • 1970-01-01
        • 1970-01-01
        • 2021-08-08
        • 1970-01-01
        • 1970-01-01
        • 2019-09-24
        • 2011-12-24
        • 2017-04-10
        相关资源
        最近更新 更多