coding.net演示平臺獲取mysql服務連線資訊變數

NO IMAGE

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']);

這樣後續更新原始碼後就不用修改連線資訊了,也不用擔心資料庫相關資訊洩露了。