您如何看待关于如何配置开发/登台/生产实例的奇怪想法?

时间:2008-12-14 10:04:10

标签: php apache mod-rewrite litespeed

我对如何配置依赖于环境的参数有一个奇怪的想法。您可以在Rails的config / database.yml

中找到类似的参数

在我目前的项目中,我使用PHP和Litespeed Web Server(虽然相同的技术适用于PHP + Apache),我认为......“为什么不使用mod_rewrite呢?”。我为每个环境配置了单独的虚拟主机配置(目前开发/生产)

我现在拥有的是:


RewriteRule (.*) $1 [env=development:1]

用于开发环境vhost。但如果它会是这样的呢?


RewriteRule (.*) $1 [env=development:1,env=mysql_host:localhost,env=mysql_port:3306,env=mysql_user:root,env=mysql_pass:,env=mysql_db:mydbname]

它会有意义还是会引起一些问题?你觉得怎么样?

5 个答案:

答案 0 :(得分:3)

我不相信重写规则是一个特别直观的地方来放置这样的配置信息。也许我误解了一些东西,但是数据库连接的开发,登台和生产环境之间的唯一区别是什么?通常代码也是不同的(至少进行一次更改),因此如果您使用的是修订控制系统,我认为拥有您复制的模板配置文件(database.cfg.template)可能更好一点。 (并告诉您的修订控制系统忽略)并修改(到database.cfg)。然后很明显这些信息在哪里。

答案 1 :(得分:1)

你是对的 - 这是一个奇怪的想法。

IMO,这对mod_rewrite来说非常糟糕。没错,配置信息属于机器,而不是代码库(我看到人们一直在犯的错误),但它也不一定属于Web服务器配置。

我建议使用不受版本控制管理的配置文件。

答案 2 :(得分:0)

如果要在vhost中设置环境,可以执行类似

的操作
php_value ENV "development"

然后从$_SERVER数组

中读取它

答案 3 :(得分:0)

首先,如果您实际上没有更改URL,请不要使用$ 1作为替换,只需使用短划线即可。根据文档:

  

破折号表示没有替代品   应该执行(现有的路径   通过未触动过)。这是   当一面旗帜(见下文)需要时使用   在不改变路径的情况下应用。

但实际上,我认为答案是mod_env。 SetEnv指令可以放在你的< VirtualHost>中。阻止,避免不必要的RewriteRule foo。

答案 4 :(得分:0)

您应该定义当前环境的最佳和唯一的地方是bootstrap。

查看symfonyagavi引导文件。