IBM Bluemix PostgreSQL and psql


IBM Bluemix PostgreSQL and psql

我在Bluemix中创建了一个PHP运行时环境,并为其附加了一个postgresql服务器。当尝试从终端使用psql时,它似乎无法访问数据库?

此外,添加./bp-config/options.json和:

{
    "PHP_EXTENSIONS": ["mysqli"]
}

我无法从我的php脚本中通过mysqli进行连接。

用于PHP的扩展mysqli对于连接MySQL数据库服务器非常有用。正如您所描述的,您将PostgreSQL数据库绑定到应用程序,因此此扩展完全没有用。要连接到PostgreSQL,您可以在PHP应用程序中使用composer依赖关系管理器(Bluemix支持),并使用依赖关系设置composer.json。很明显,您可以向composer.json.添加其他依赖项

   "require": {
        "ext-pgsql": "*"
   }

然后,您可以使用以下代码连接到PostgreSQL服务,以便从CloudFoundry 提供的VCAP_SERVICES变量中获取服务凭据

if (getenv("VCAP_SERVICES")===false) {
$db = 'XXXX';
define("APP_DB_SCHEMA", $db);
define("APP_DB_HOST", 'xxxx');
define("APP_DB_PORT", "xxxx");
define("APP_DB_USERNAME", 'xxxx');
define("APP_DB_PASSWORD", "xxxx");
} else {
// getting VCAP configuration
$services = getenv("VCAP_SERVICES");
$services_json = json_decode($services, true);
$pgsql_config = $services_json["postgresql-9.1"][0]["credentials"];
define("APP_DB_SCHEMA", $pgsql_config["name"]);
define("APP_DB_HOST", $pgsql_config["host"]);
define("APP_DB_PORT", $pgsql_config["port"]);
define("APP_DB_USERNAME", $pgsql_config["user"]);
define("APP_DB_PASSWORD", $pgsql_config["password"]);
}

然后通过建立DB连接

$dbConnectionString = "host=" . APP_DB_HOST . " port=" . APP_DB_PORT . " dbname=" . APP_DB_SCHEMA . " user=" . APP_DB_USERNAME . " password=" . APP_DB_PASSWORD;
$dbConnection = pg_connect($dbConnectionString);