我尝试通过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正确翻译/可达的)?
答案 0 :(得分:0)
您可以尝试重新启动httpd(apache)服务。
我和你有同样的问题,也许是同样的原因。 不知何故postgresql插件似乎在启动后混淆。 在' hosts'中输入IP正在工作,但DNS查找没有。 我用php 5.5.16 / pgsql 9.3.5运行Archlinux。 要重新启动,我会执行系统重启httpd'但是你可能需要深入研究services.msc工具。