coding.net演示平台获取mysql服务连接信息变量

498 查看

coding.net在很久之前就推出了演示平台功能,每个用户有512M的免费内存资源,可以搭建常用的应用平台环境。php官方给的例子是知名开源博客wordpress,但其中关于wp-conf.php数据库连接信息配置我不太赞同,采取了写死变量值的方法。

其实coding.net的演示平台是基于Cloud Foundry开源技术搭建的,那理应遵循一般规律。其中VCAP_SERVICES环境变量就存储了服务的相关信息。

下面就用基于php语言的wordpress说明下问题。

新建一个文件info.php,录入以下代码

<?php
phpinfo();

在提交到演示平台运行后,访问该页面,你会发现在PHP Variables里存在一个_ENV["VCAP_SERVICES"]环境变量,其值是一个json对象,其中包含了我们需要的信息。

假设我们添加的mysql服务名就叫“mysql”,那么可以改写wp-conf.php数据库连接信息相关代码片段如下

// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
$vcap = getenv("VCAP_SERVICES");
$data = json_decode($vcap, true);
$creds = $data['mysql'][0]['credentials'];
/** WordPress数据库的名称 */
//define('DB_NAME', 'database_name_here');
define('DB_NAME', $creds['name']);
/** MySQL数据库用户名 */
//define('DB_USER', 'username_here');
define('DB_USER', $creds['username']);
/** MySQL数据库密码 */
//define('DB_PASSWORD', 'password_here');
define('DB_PASSWORD', $creds['password']);
/** MySQL主机 */
//define('DB_HOST', 'localhost');
define('DB_HOST', $creds['hostname']);

这样后续更新源码后就不用修改连接信息了,也不用担心数据库相关信息泄露了。