我在哪里将我的网站配置值放在LAMP服务器设置中?

时间:2011-12-13 20:02:17

标签: php apache configuration webserver lamp

我通常将数据库和特定于网站的配置值放入.php文件中的全局变量中。这包含在需要访问数据库的任何页面中。

这些事情应该更合理吗?我可以向php.ini添加任意值,如果是这样的话怎么样?或者apache中的http.conf怎么样?我可以这样配置我的网站吗?

理想情况下,我想要一个解决方案,这意味着每次请求都不会读取配置。

5 个答案:

答案 0 :(得分:2)

我的经验表明,最简单的方法是最好的方法,所以我会把数据库连接conf放在一个项目的文件中。为什么?这是因为:

  • 每个项目都有或应该有配置文件/文件(INI,XML,JSON ....)
  • 全局变量r目前矫枉过正
  • 如果有人想知道在哪里更改数据库的配置,那么Apache文件将是最后,他们应该检查!

我对一个简单解决方案的建议是创建一个文件,比如Config.php,并在其中放入一个类,它加载XML,INI或带结构数据的其他类型的文件。然后通过调用 getters ,您可以随时随地获取配置。

答案 1 :(得分:1)

在Apache中,您可以使用SetEnv

SetEnv NAME value

$_SERVER['NAME']

可以访问哪些内容

http://httpd.apache.org/docs/2.2/mod/mod_env.html

使用PHP,您可以在INI中设置默认的MySQL连接设置

mysql.default_host = ...
mysql.default_user = ...
mysql.default_password = ...

mysqli.default_host = ...
mysqli.default_user = ...
mysqli.default_password = ...

答案 2 :(得分:0)

您可以将数据作为环境值放在Apache中,正如Petah通过SetEnv指出的那样。

除了安全方面,你没有获得任何东西,更多的是偏好问题(不要忘记,你不能通过phpinfo()之类的东西来展示你的环境变量。)

正如您所说,另一种常见的方法是将配置变量保存在文档控制之外的文件中,以便浏览器无法访问它,并确保您的代码无法读取并向其他人展示其内容

我认为没有太奢侈的方法可以做到这一点:)

答案 3 :(得分:0)

存储数据库凭据

我强烈建议您在.htaccess文件中结合使用INI和SetEnv。正如其他人已经说过的那样。

对象持久性

但是,如果您想避免为每个请求加载此数据,那么您将需要某种对象持久性。例如,Doctrine或MongoDB或两者https://stackoverflow.com/a/4081150/486233

object persistence in php

答案 4 :(得分:-1)

我找到了一个更好的方法来摆弄。您可以向php.ini添加任意配置选项,例如

[MyGreatWebsite]
dbname=db_awesome

您可以使用get_cfg_var功能检索它们,例如

get_cfg_var('dbname')

它不是通过phpinfo暴露事物(作为一个env变量)并且它只读取配置一次(可验证,因为更改值需要重新启动服务器)