PHP - pg_connect()不能转换主机名到地址(通过VPN)


PHP - pg_connect() cannot translate host name to address (via VPN)

我试图通过PHP连接到远程PgSQL服务器,在我的VPN内。

下面是代码(一个简单的脚本,从包含用户列表的表中提取信息):
$query = "SELECT name, surname FROM test_table WHERE id=$1";
$link   = pg_Connect("host=named.host.inside.my.VPN.network dbname=testdb user=username password=password") or die('DB Connection failed');
if ($link){
    $select = pg_prepare($link, "my_query", $query);
    $select = pg_execute($link, "my_query", array(1));  //retrieve user with id == 1
    if($select){
        while ($row = pg_fetch_row($select)){
            echo "User 1: " . $row[0] . " " . $row[1];
        }
    }
    else{
        echo "Select error! - " . pg_last_error($link);
    }
}
else{
    echo "Link error - " . pg_last_error($link);
}

我在XAMPP (Windows 7作为操作系统)中运行此脚本,PgSQL服务器是AmazonRDS,可通过named.host.inside.my.VPN.network等命名主机访问。

如果我对这个主机进行ping, cmd显示服务器的正确IP地址,如果我将这个IP地址添加到"hosts"文件PHP正确地解析它并且不会死亡。如果没有在"hosts"文件中添加"123.45.67.89 named.host.inside.my.VPN.network"行,脚本执行将给出如下输出:

提示:pg_connect(): cannot to connect to PostgreSQL server: could不能将主机名"named.host.inside.my.VPN.network"转换为地址:UnknownC:'xampp'htdocs'filename.php在行6 DB连接时出现服务器错误失败的

我的问题是:是否有一种方法让pg_connect()解析"named.host.inside.my.VPN.network"域没有将其添加到文件"hosts"(考虑到它是正确翻译/可通过ping到达)?

您可以尝试重新启动httpd (apache)服务。

我和你有同样的问题,也许原因是一样的。不知何故,postgresql插件似乎是混乱的启动后。在"hosts"中输入IP正常,但DNS查找不正常。我正在运行Archlinux与php 5.5.16/pgsql 9.3.5。要重新启动,我执行'systemctl restart httpd',但您可能需要挖掘服务。msc工具。