0

背景.. 我正在尝试从 php 脚本外部连接到我的 heroku 数据库,但出现“无法连接到服务器”错误

技术.. 这是一个“起重机”生产级数据库,而不是共享数据库。我正在尝试从运行在共享托管平台上的 php 脚本连接,

到目前为止的故事...... 我可以从我的本地机器和 postgres.heroku.com 输出的 php 连接字符串进行连接。我也可以连接 psql 字符串,所以连接信息没有问题

.. 但是当我将该 php 脚本移动到我在另一台主机上启动并运行的 php 服务器时,我会收到“无法连接”错误。这些主机向我保证,从它们的外部连接没有限制边。

编码..

$dbconn = pg_connect("host=ec2-54-235-162-154.compute-1.amazonaws.com port=5882 dbname=***** user=***** password=***** sslmode=require options='--client_encoding=UTF8'") or die('Could not connect: ' . pg_last_error());

错误..

Warning: pg_connect(): Unable to connect to PostgreSQL server: could not connect to server: Connection refused Is the server running on host "ec2-54-235-162-154.compute-1.amazonaws.com" and accepting TCP/IP connections on port 5882? in /usr/local/pem/vhosts/164125/webspace/httpdocs/scheduled/postgres_vr.php on line 3 Warning: pg_last_error(): No PostgreSQL link opened yet in /usr/local/pem/vhosts/164125/webspace/httpdocs/scheduled/postgres_vr.php on line 3 Could not connect:

选项

我在 heroku 中找不到任何关于将 IP 地址列入白名单的文档,这将是第一个猜测?还有其他指针吗?

编辑我刚刚找到了这个线程,它类似于..
Heroku Postgres Connection from localhost PHP application .. 但据我所知,我启用了正确的 ssl 设置。这是openssl和pgsql上phpinfo()的相关部分。

OpenSSL support enabled
OpenSSL Library Version OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
OpenSSL Header Version  OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008

PostgreSQL(libpq) Version   8.1.23
Multibyte character support enabled
SSL support enabled
Active Persistent Links 0
Active Links    0

Directive   Local Value Master Value
pgsql.allow_persistent  On  On
pgsql.auto_reset_persistent Off Off
pgsql.ignore_notice Off Off
pgsql.log_notice    Off Off
pgsql.max_links Unlimited   Unlimited
pgsql.max_persistent    Unlimited   Unlimited
4

1 回答 1

0

这可以在本地工作,但不能在单独的服务器上工作。该错误表示它无法建立连接,表明它永远不会完成 syn/ack 握手。由于这可以在您的计算机上运行,​​我们可以消除 Heroku 和 PostgreSQL。具体的错误和场景表明它不是 PHP。

所以它必须是别的东西。我首先要看的是位于您的服务器和互联网之间的任何防火墙。如果做不到这一点,请检查您在 AWS EC 实例上可能拥有的任何设置,尤其是关于 iptables 的设置。

于 2013-05-15T07:02:36.920 回答