Heroku PHP pgconnect -密码认证失败的用户


Heroku PHP pgconnect - password authentication failed for user

我正在尝试从PHP连接到PostgreSQL上的Heroku。为了简化,我试着:

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: works连接相同的凭据
  • 使用PHP连接本地pgsql数据库:works
  • 从CLI连接相同的凭据:works

这让我觉得PHP应该对密码做些什么。我在网上找到了一些关于MD5的东西,但是找不到任何具体的。

你知道怎么解决这个问题吗?

这里可以正常工作:

~ 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是正确的,这是你想要使用的实际连接(相对于另一个env var), getenv("DATABASE_URL")返回什么值,等等。

同样,你没有指定端口;所以它将使用默认的5432,这可能不正确。