在httpd.conf中设置PHPvariables?

我想在每个虚拟主机的基础上自动更改数据库连接设置,以便在从分段迁移到活动并访问不同的数据库时,不必编辑任何PHP代码。 这是在一个单独的专用服务器上。

所以我想知道,我可以在httpd.conf中设置一个PHPvariables或常量作为虚拟主机定义的一部分,然后该虚拟主机可以使用它自动指向testing数据库?

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

如果这是不可能的,我猜在这种情况下,我可以安全地检查我正在运行的主机名告诉,但我想要一点脆弱

希望这是有道理的

非常感谢

伊恩

你有没有试过使用.htaccess文件? 你可以用它覆盖php.ini的值。

只需把.htaccess文件放到你的htdocs目录下:

 php_value name value 

更多信息:

是的,你可以这样做:

 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') { 

我不会设置一个环境变量,因为这在默认脚本输出如PhpInfo()中也是可见的。

只需在htdocs文件夹上方的.htaccess中使用php_value,即可完成安全:)

.htaccess的问题在于它是代码基础树的一部分。 代码库树是VC / SVN的一部分。 因此,本地/ dev中的任何更改都将转移到生产中。 保持httpd.conf中的env变量设置可以节省您不小心覆盖服务器vs dev标志的注意力。 除非你想使用IP地址或主机名,这两者都不是可扩展的方法。

我也在看这种类型的解决方案。 我发现这是在Apache下,您可以使用http.conf中的SetEnv SetEnv KeyName DataValue ,在IIS中可以使用Fast CGI Settings >> Edit … >> Environment Variables >> …并添加KeyName, DataValue

这反过来又允许PHP $var = $_SERVER["KeyName"]; 被设置为DataValue并在IIS和Apache下一致地使用。

我知道这是一个奇怪的用例。 我在工作中使用WAMP,在家使用MAMP,所以能够以相同的方式工作是很好的。