我试图通过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工具。