【问题标题】:.htaccess Set PHP Value depending on Hostname.htaccess 根据主机名设置 PHP 值
【发布时间】:2010-07-12 11:18:59
【问题描述】:

对于我们的项目,我们需要根据环境(开发/生产)设置几个 PHP 值,最值得注意的是会话保存路径以及一些跟踪和分析设置。

我们不想在 PHP 脚本中设置它们,因为由于一些可怕的遗留代码需要进行大量更改,而且我们不希望每次都在将 .htaccess 提交到 git 之前更改它(但是我们要求 .htaccess 在源代码管理中)。

有没有办法在 .htaccess 中做这样的事情:

if (hostname == "dev.example.com") {
  php_value session.save_path /tmp
  [...]
}

【问题讨论】:

    标签: php apache .htaccess


    【解决方案1】:

    您可以在 Apache 的虚拟主机配置中定义规则(高于 .htaccess 一步,您必须要求管理员进行编辑):

    <VirtualHost *:80>                                                              
        ServerName piskvor.example.com
        ServerAlias *.host2.example.com
        php_value session.save_path /home/piskvor/tmp
    </VirtualHost>
    <VirtualHost *:80>                                                              
        ServerName someotherhost.example.org
        php_value session.save_path /tmp
    </VirtualHost>
    

    这使您可以对每个主机进行不同的配置(通过主机名或主机名通配符)。大多数较新的 Apache 设置都支持这一点。

    【讨论】:

      【解决方案2】:

      在之前的工作中,我们使用了以下内容:

      <IfDefine SERVER1>
        php_value session.save_path /tmp1
      </IfDefine>
      
      <IfDefine SERVER2>
        php_value session.save_path /tmp2
      </IfDefine>
      

      然后您可以使用附加开关启动 apache:

      -D SERVER1 SERVER2

      编辑:

      编辑

      也许像下面这样的东西可能是一个中间立场?

      if (!file_exists('.htaccess')) {
      
        copy('.htaccess.default', '.htaccess');
      
        $handle = fopen('.htaccess', 'a');
      
        switch ($_SERVER['HTTP_HOST']) {
      
          case 'dev.site':
              fwrite($handle, 'php_value .....' . "\n");
              fwrite($handle, 'php_value .....' . "\n");
          break;
      
          case 'live.site':
              fwrite($handle, 'php_value .....' . "\n");
              fwrite($handle, 'php_value .....' . "\n");
          break;  
      
        }
      
        fclose($handle);
      
      }
      

      【讨论】:

      • 这是朝着正确方向迈出的一步,但管理员肯定会阻止这一点。我将尝试与他们谈判,但我仍然希望仅限于 .htaccess
      • 这并没有真正构成任何安全风险,但是我很确定这与 .htaccess 将获得的一样多才多艺。一个以静默方式写入 .htaccess 的 PHP 脚本怎么样?
      猜你喜欢
      • 2020-10-12
      • 2012-05-01
      • 2014-09-15
      • 2016-10-23
      • 2018-01-12
      • 1970-01-01
      • 1970-01-01
      • 2020-10-07
      • 1970-01-01
      相关资源
      最近更新 更多