我通常将数据库和特定于网站的配置值放入.php文件中的全局变量中。这包含在需要访问数据库的任何页面中。
这些事情应该更合理吗?我可以向php.ini添加任意值,如果是这样的话怎么样?或者apache中的http.conf怎么样?我可以这样配置我的网站吗?
理想情况下,我想要一个解决方案,这意味着每次请求都不会读取配置。
答案 0 :(得分:2)
我的经验表明,最简单的方法是最好的方法,所以我会把数据库连接conf放在一个项目的文件中。为什么?这是因为:
我对一个简单解决方案的建议是创建一个文件,比如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
答案 4 :(得分:-1)
我找到了一个更好的方法来摆弄。您可以向php.ini添加任意配置选项,例如
[MyGreatWebsite]
dbname=db_awesome
您可以使用get_cfg_var
功能检索它们,例如
get_cfg_var('dbname')
它不是通过phpinfo暴露事物(作为一个env变量)并且它只读取配置一次(可验证,因为更改值需要重新启动服务器)