PHP - pg_connect()无法将主机名转换为地址(通过VPN)

时间:2014-06-25 10:51:01

标签: php apache postgresql

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

以下是代码(从包含用户列表的表中提取信息的简单脚本):

$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正确解析它并且不会死。如果不添加行" 123.45.67.89 named.host.inside.my.VPN.network"进入"主持人"文件,脚本执行给出了这个输出:

  

警告:pg_connect():无法连接到PostgreSQL服务器:可以   不翻译主机名" named.host.inside.my.VPN.network"解决:未知   第6行DB连接上的C:\ xampp \ htdocs \ filename.php中的服务器错误   失败

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

1 个答案:

答案 0 :(得分:0)

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

我和你有同样的问题,也许是同样的原因。 不知何故postgresql插件似乎在启动后混淆。 在' hosts'中输入IP正在工作,但DNS查找没有。 我用php 5.5.16 / pgsql 9.3.5运行Archlinux。 要重新启动,我会执行系统重启httpd'但是你可能需要深入研究services.msc工具。