如何使ZF2 db凭据环境特定

RSM*_*RSM 1 php git configuration environment-variables zend-framework2

我正在开始一个新项目.

我正在使用ZF2.我刚安装它并启动并运行Skeleton应用程序.

这是我的部署过程:

  • 我在我的本地机器上开发
  • 然后我推送到我的公共github存储库
  • 然后我使用deployhq.com将它们部署到我的生产服务器,这是用户可以看到所做更改的地方.

我试图在博客等处查看堆栈,zend网站和谷歌,但仍然没有任何真正的理解或解决我的问题.

我希望应用程序根据其环境使用不同的数据库凭据.例如,如果在我的本地计算机'dev'上,则使用凭据A,但如果在实时服务器上,则使用凭据B.

我已经阅读了很多关于全局和本地自动加载配置文件等的内容,但是请记住我的github repo是公共的,任何我提交任何配置文件的地方都会显示我的数据库详细信息.

我想知道是否有办法,相同的理论,全局和本地文件与数据库连接,我手动上传生产细节,而不是通过git出于安全原因,并告诉git以某种方式忽略本地配置文件?我还需要知道如何告诉应用程序根据环境和位置使用这些配置文件.

ara*_*ara 5

在Zend 2中有

  1. 全局配置文件&
  2. 模块级配置文件

如果您想知道使用,可以参考下面的链接

配置如何在ZF2中运行

当我有一个相同的场景时,我使用上面的链接来理解和利用Zend Config模块,它非常适合处理这种情况.

创建两个文件

production.php local.php

在这两个文件中

根据环境返回此数组

return array(
     "dbname" => "yourdbname"
     "dbhostname" => "dbhostname"
     "dbusername" => "yourdbusername",
     "dbpassword" => "yourdbpassword"
 );
Run Code Online (Sandbox Code Playgroud)

在您的zend framewrok应用程序的config/autoload /目录中

稍后按照以下说明编辑config/application.config.php文件

//从Apache vhost文件获取应用程序env(在这里你可以在你的apache vhost文件中设置为production或local)

$applicationEnv = getenv('APPLICATION_ENV');
Run Code Online (Sandbox Code Playgroud)

$ environmentSpecificConfigPath ="config/autoload /{,*.}{".$ applicationEnv.",local} .php";

//接下来在config数组中传递特定于环境的配置路径

 'config_glob_paths' => array($environmentSpecificConfigPath)
Run Code Online (Sandbox Code Playgroud)

在任何控制器或行动中

你可以使用下面的代码

 $configArray = $this->getGlobalConfig(); 
Run Code Online (Sandbox Code Playgroud)

现在$ configarray拥有所有数据库凭据来创建连接

$adapter = new Zend\Db\Adapter\Adapter(array(
    'driver' => 'Mysqli',
    'database' => $configArray['dbname'],
    'username' => $configArray['dbusername'],
    'password' => $configArray['dbpassword']
 ));
Run Code Online (Sandbox Code Playgroud)

如果使用config数组连接整个应用程序中的数据库,则无需担心环境变化,只需确保vhost文件中有Apache APPLICATION_ENV条目即可

你可以通过在apache vhost文件中添加以下行来实现

 SetEnv APPLICATION_ENV "production" // in your production server 

 SetEnv APPLICATION_ENV "local"  // in your local 
Run Code Online (Sandbox Code Playgroud)

最后但并非最不重要的是,您可以使用Zend Experts模块ZeDB

https://github.com/ZendExperts/ZeDb

管理您的CRUD应用程序

希望以上步骤可以帮助您创建环境