2015-05-30 3 views
1

Я пытаюсь подключиться к PostgreSQL с PHP на Heroku. Для упрощения я попробовал:Heroku PHP pgconnect - аутентификация пароля для пользователя

function pg_connection_string_from_database_url() { 
    extract(parse_url(getenv("DATABASE_URL"))); 
    return "user=$user password=$pass host=$host sslmode=require dbname=" . substr($path, 1); 
} 
$pg_conn = pg_connect(pg_connection_string_from_database_url()); 

я получаю эту ошибку:

FATAL: password authentication failed for user 

Я пробовал:

  • соединяясь с теми же учетными данными с помощью Navicat: работает
  • Подключение к локальная база данных pgsql с использованием PHP: работает
  • Подключение с теми же учетными данными из C LI: works

Это заставляет меня думать, что PHP должен делать что-то с паролем. Я нашел некоторые вещи о MD5 в Интернете, но не могу найти ничего конкретного.

Любая идея, как исправить это?

ответ

0

Прекрасно работает здесь:

~ dzuelke$ heroku run bash 
Running `bash` attached to terminal... up, run.4366 
~ $ php -r ' 
> function pg_connection_string_from_database_url() { 
>  extract(parse_url(getenv("DATABASE_URL"))); 
>  return "user=$user password=$pass host=$host sslmode=require dbname=" . substr($path, 1); 
> } 
> $pg_conn = pg_connect(pg_connection_string_from_database_url()); 
> var_dump($pg_conn);' 
resource(4) of type (pgsql link) 

Двойной и тройной проверки, что ваш DATABASE_URL является правильным, что это фактическое соединение вы хотите использовать (в отличие от другого окр вар), какое значение getenv("DATABASE_URL") возвращается, и так далее.

Кроме того, вы не указываете порт; поэтому он будет использовать по умолчанию 5432, что может быть неправильным.

+0

Я забыл упомянуть, что я подключаюсь из (хобби-разработчика Heroku) к базе данных postgres в другом приложении Heroku (производство). Приведенный выше код действительно работает при подключении к локальной БД. – JeroenJ

+0

Ну, значит, ваш 'DATABASE_URL', возможно, ошибается, или вам нужно читать из другого env var, который имеет правильные учетные данные? – dzuelke

+0

dzuelke, не могли бы вы попробовать, если его также можно подключить к этой базе данных, если вы запустите этот код локально? (вне курса с правильным DATABASE_URL var) – JeroenJ

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