RSM*_*RSM 1 php git configuration environment-variables zend-framework2
我正在开始一个新项目.
我正在使用ZF2.我刚安装它并启动并运行Skeleton应用程序.
这是我的部署过程:
我试图在博客等处查看堆栈,zend网站和谷歌,但仍然没有任何真正的理解或解决我的问题.
我希望应用程序根据其环境使用不同的数据库凭据.例如,如果在我的本地计算机'dev'上,则使用凭据A,但如果在实时服务器上,则使用凭据B.
我已经阅读了很多关于全局和本地自动加载配置文件等的内容,但是请记住我的github repo是公共的,任何我提交任何配置文件的地方都会显示我的数据库详细信息.
我想知道是否有办法,相同的理论,全局和本地文件与数据库连接,我手动上传生产细节,而不是通过git出于安全原因,并告诉git以某种方式忽略本地配置文件?我还需要知道如何告诉应用程序根据环境和位置使用这些配置文件.
在Zend 2中有
如果您想知道使用,可以参考下面的链接
当我有一个相同的场景时,我使用上面的链接来理解和利用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应用程序
希望以上步骤可以帮助您创建环境
| 归档时间: |
|
| 查看次数: |
2352 次 |
| 最近记录: |