目前我正在为数据库驱动的网站进行大量更新。在PHP中切换开发数据库的最佳方式?
所以在webroot中有一个名为db.php的文件,它包含在每个页面中。它具有到SQL数据库的连接细节。这默认为实时数据库。
我们还有一个名为db.local.php的文件。现在,如果此文件存在,则会覆盖默认值中的连接详细信息。因此,这个文件不会保存在源代码控制之下,因为它对每个设置都是独一无二的。
我们检查文件是否存在通过去:
if(file_exists(getcwd().'/db.local.php')) {
require_once('db.local.php');
} else {
//default database details
}
是我们使用这个文件从多个文件夹的问题,不只是根目录(例如从根目录/管理员调用的脚本的CWD将根目录/管理员而不仅仅是webroot)。所以如果从另一个文件夹中的脚本调用db.php,当前工作目录将不会是webroot,所以我们不会看到db.local.php。这很糟糕,因为我们正在使用不正确的数据库。
有没有办法解决这个问题? (比如检查从哪个文件中取出的目录,而不是脚本执行的目录)。还是有更好的方法来解决这个问题比已经实施?
您是否预见到需要在目录结构中移动文件?是不是有一个原因,你不能只是做'包括'../ db.local.php';'? – 2012-08-14 00:09:07
这会工作,但如果db.local.php不存在,我们有一个问题。我明白你的意思了。 – penguin 2012-11-03 16:04:48
我猜,这样做会起作用,但是我需要在每个包含它的文件中执行此操作,而该文件包含来自任何目录的文件,如果存在该条件测试(如果存在)可能需要很多工作。 所以我现在有一个名为db.php.sample文件,与该文件的结构,但没有实际的密码,星展银行等,这是下混帐保持。 db.php中也没有了,有一个在一个的.gitignore忽略。这样我可以推送更改并且db文件不受影响。我发现这是最简单的方法。感谢大家的建议;他们都非常有帮助! – penguin 2012-11-03 16:08:54