【发布时间】:2021-04-20 22:29:17
【问题描述】:
我有一个 .php 文件,它应该接收并显示来自远程数据库的数据。我从 PHPStorm(通过“数据库”右侧窗格连接到远程数据库)和浏览器运行我的程序。两种方式我都会得到一个错误,这取决于我传递给 pg_connect() 函数的参数数量。 如果我使用
$dbconn = pg_connect("host=pg hostaddr=server.address.ru port=5432 dbname=studs user=... password=...")
错误是
Unable to connect to PostgreSQL server: could not parse network address "server.address.ru": Unknown host in...
但是我确定我写的地址是正确的(里面没有错别字)。这样我不确定传递的参数格式的正确性。
如果我使用
$dbconn = pg_connect("host=server.address.ru dbname=studs user=... password=...")
命令,错误是
pg_connect(): Unable to connect to PostgreSQL server: could not connect to server: Connection timed out
我找到了很多关于这个错误的信息,但它主要是指本地主机并且不能解决我的问题。我想,问题可能出在函数中设置此连接的方式上,但我不知道为什么它不能正常工作。我该如何解决?
【问题讨论】:
-
“远程”有多远?第二种形式看起来像是在尝试连接,但远程服务器要么处于脱机状态,要么位于阻止连接的防火墙后面。在公共互联网上很难找到可访问的数据库服务器。
-
其实我是通过 SSH 从 PHPStorm 连接到这个服务器的(连接测试成功)。这里写的是“server.address.ru”,而不是我创建 SSH 隧道时在“host”字段中写的。目前它没有离线(我可以通过 PuTTY 连接到它)。
-
那可能是你的问题。您需要一个 SSH 隧道来连接。正如我所料,直接连接被阻止。至于您的下一个问题(如何设置 SSH 隧道?)this question 可能会有所帮助。
标签: php postgresql server