在httpd.conf中设置PHP变量?

时间:2020-03-06 14:50:56  来源:igfitidea点击:

我想在每个虚拟主机的基础上自动更改数据库连接设置,这样一来,我就无需编辑任何PHP代码,因为它可以从暂存阶段迁移到活动阶段并可以访问其他数据库。这是在单个专用服务器上。

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

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

如果无法做到这一点,我想在这种情况下我可以安全地检查正在运行的主机名,但是我希望它不那么脆弱

希望这有道理

非常感谢

伊恩

解决方案

是的...我们可以执行以下操作:

SetEnv DATABASE_NAME testing

然后在PHP中:

$database = $_SERVER["DATABASE_NAME"];

或者

$database = getenv("DATABASE_NAME");

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

在httpd.conf中:

SetEnv database testing

在PHP中:

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

或者

if ($_SERVER['database'] == 'testing') {

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

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

php_value name value

更多信息:

  • https://php.net/manual/zh/configuration.changes.php
  • https://php.net/manual/zh/ini.php

我不会设置环境变量,因为在默认脚本输出(例如PhpInfo())中也可以看到此变量。

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