2015-12-03 11 views
0

Я создал среду выполнения PHP в Bluemix и подключил к ней сервер postgresql. При попытке использовать psql из терминала он, похоже, не может добраться до базы данных?IBM Bluemix PostgreSQL и psql

Кроме того, добавление ./bp-config/options.json и:

{ 
    "PHP_EXTENSIONS": ["mysqli"] 
} 

Я не в состоянии conncet через MySQLi из моих PHP скриптов.

+0

Где находится сервер psotgresql? Какой терминал? Не могли бы вы добавить несколько подробностей? –

ответ

3

Расширение mysqli для PHP полезно для подключения к серверу базы данных MySQL. Как вы описали, вы привязали к вашему приложению базу данных PostgreSQL, поэтому это расширение совершенно бесполезно. Чтобы подключиться к PostgreSQL, вы можете использовать менеджер зависимостей компоновщика (поддерживаемый на Bluemix) с вашим PHP-приложением и установить ваш composer.json с зависимостью. Вы можете добавить другие зависимости к вашему composer.json.

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

Тогда вы могли бы подключиться к службе PostgreSQL с использованием кода, как следующий один, чтобы получить обслуживание учетных данных от VCAP_SERVICES переменных, доступных из CloudFoundry

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"]); 
} 

, а затем установить соединение с базой данных через:

$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); 
+0

Извините, да, конечно, я получил «require»: {"ext-pgsql": "*"} в composer.json. Но я не могу его построить, я получаю BuildpackCompileFailed –

+0

Какой buildpack вы используете при нажатии? –

+0

Я не знаю? Стандарт? И не должен ли я использовать psql в терминале? –

Смежные вопросы