代码之家  ›  专栏  ›  技术社区  ›  Polsonby

在httpd.conf中设置PHP变量?

  •  18
  • Polsonby  · 技术社区  · 17 年前

    我想根据每个vhost自动更改我的数据库连接设置,这样我就不必在PHP代码从暂存移动到实时时编辑任何PHP代码,还可以访问不同的数据库。这在单个专用服务器上。

    所以我想知道,我是否可以在httpd.conf中设置一个PHP变量或常量作为vhost定义的一部分,然后站点可以使用它自动指向测试数据库?

    $database = 'live';
    if (some staging environment variable is true) {
        $database = 'testing'; // and not live
    }
    

    希望这有意义

    非常感谢

    伊恩

    6 回复  |  直到 17 年前
        1
  •  81
  •   JW.    16 年前

    是的……你可以这样做:

    SetEnv DATABASE_NAME testing
    

    然后在PHP中:

    $database = $_SERVER["DATABASE_NAME"];
    

    $database = getenv("DATABASE_NAME");
    
        2
  •  17
  •   Christian    13 年前

    您可以设置环境变量并使用PHP检索它。

    在httpd.conf中:

    SetEnv database testing
    

    if (getenv('database') == 'testing') {
    

    if ($_SERVER['database'] == 'testing') {
    
        3
  •  13
  •   Potherca Zaid Amireh    8 年前

    您是否尝试使用.htaccess文件?您可以使用它覆盖php.ini值。

    只需将.htaccess文件放入htdocs目录:

    php_value name value
    

    进一步资料:

        4
  •  3
  •   SchizoDuckie    17 年前

    只需在htdocs文件夹上方的.htaccess中使用一个php_值,就可以安全完成:)

        5
  •  2
  •   nitish    14 年前

    htaccess的问题在于它是代码基树的一部分。代码基树是VC/SVN的一部分。因此,本地/dev中的任何更改都会转移到生产中。将env变量设置保留在httpd.conf中可以避免意外覆盖服务器vs dev标志。当然,除非您想处理IP地址或主机名,这两种方法都不是可伸缩的。

        6
  •  0
  •   S.Donovan    9 年前

    我也在研究这种类型的解决方案。我发现,在Apache下,您可以使用 SetEnv KeyName DataValue KeyName, DataValue

    这反过来又允许PHP $var = $_SERVER["KeyName"]; DataValue 并根据需要在IIS和Apache下一致使用。

    推荐文章