背景.. 我正在尝试从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
答案 0 :(得分:0)
这在本地工作,但不在单独的服务器上。错误说它无法建立连接,表明它永远不会完成syn / ack握手。由于这适用于您的计算机,我们可以消除Heroku和PostgreSQL。具体的错误和场景表明它不是PHP。
所以它必须是别的东西。我要看的第一件事就是位于服务器和互联网之间的防火墙。如果做不到这一点,请检查您在AWS EC实例上可能具有的任何设置,尤其是有关iptables的设置。