如何使用PHP通过SSH连接到远程托管的Firebird数据库
我需要创建一个PHP脚本,通过SSH隧道连接到远程主机,连接到Firebird数据库并访问一些数据。 我环顾四周,成功地实现了SSH连接和隧道连接,但之后我不知道如何正确连接到Firebird 下面是我现在使用的代码:如何使用PHP通过SSH连接到远程托管的Firebird数据库,php,ssh,firebird,Php,Ssh,Firebird,我需要创建一个PHP脚本,通过SSH隧道连接到远程主机,连接到Firebird数据库并访问一些数据。 我环顾四周,成功地实现了SSH连接和隧道连接,但之后我不知道如何正确连接到Firebird 下面是我现在使用的代码: $connection = ssh2_connect('hostname', 22); if (!$connection) die('No connection...'); else echo 'Connection ok! '; if (ssh2_auth_
$connection = ssh2_connect('hostname', 22);
if (!$connection)
die('No connection...');
else
echo 'Connection ok! ';
if (ssh2_auth_password($connection, 'username', 'password'))
echo "Authentication Successful! ";
else
die('Authentication Failed...');
$sshTunnel = ssh2_tunnel($connection, '127.0.0.1', 3050);
if ($sshTunnel)
echo "Tunnel created! ";
else
die("Tunnel failed...");
if ($dbh = ibase_connect('127.0.0.1/3050:D:\path\to\db\database.fdb', 'username', 'password'))
{
echo 'Connected to the database!';
}else{
echo 'Connection failed...';
}
直到隧道挖掘,一切都很好。当我调用ibase_connect时,PHP返回的错误如下:
警告:ibase_connect():无法完成对主机的网络请求
"127.0.0.1". 无法建立连接
我已经尝试过使用Putty/ssh.exe/telnet做任何事情,但没有遇到任何问题。
我知道mysqli_connect可以这样做:
mysqli_connect('127.0.0.1', 'DB_USERNAME', 'DB_PASSWORD', 'dbname', port, $tunnel);
我没有找到任何关于使用ibase_connect进行类似操作的文档。-最后一个参数是整数而不是字符串。问题中的代码不是您运行的真实代码。我看不到您的隧道一直在打开Firebird的端口(默认为3050),因此它似乎没有任何用处。例如,我们可以与zebedee/openvpn隧道(如www.tranlsate.ru)进行比较-始终有两个端口的明确规范:入站隧道套接字和出站3050 firebird套接字,然后本地客户端连接到入站端口port@Arioch'实际上,它甚至可以与这样的端口参数一起工作。无论如何,我尝试传递一个整数,结果是一样的。向大家道歉,我用我现在使用的相同端口修复了这里发布的代码,但结果是一样的。你需要以某种方式打开ssh隧道到本地操作系统的TCP堆栈。或者使用其他隧道。将FB客户端连接到隧道的入站主机/端口,隧道的出站端连接到FB服务器。看看维基百科上的图片!有两个连接。FB客户端到入站隧道主机/端口,然后出站隧道端到DB服务器主机/端口。php手册
ssh2_隧道($connection,'127.0.0.1',3050)代码>声音当您将出站端设置为FB服务器127.0.0.1/3050(如果有)时,现在您必须找到隧道的入站端并将入站h/p传递给ibase\u connect
-最后一个参数是整数而不是字符串。问题中的代码不是您运行的真实代码。我看不到您的隧道一直在打开Firebird的端口(默认为3050),因此它似乎没有任何用处。例如,我们可以与zebedee/openvpn隧道(如www.tranlsate.ru)进行比较-始终有两个端口的明确规范:入站隧道套接字和出站3050 firebird套接字,然后本地客户端连接到入站端口port@Arioch'实际上,它甚至可以与这样的端口参数一起工作。无论如何,我尝试传递一个整数,结果是一样的。向大家道歉,我用我现在使用的相同端口修复了这里发布的代码,但结果是一样的。你需要以某种方式打开ssh隧道到本地操作系统的TCP堆栈。或者使用其他隧道。将FB客户端连接到隧道的入站主机/端口,隧道的出站端连接到FB服务器。看看维基百科上的图片!有两个连接。FB客户端到入站隧道主机/端口,然后出站隧道端到DB服务器主机/端口。php手册ssh2_隧道($connection,'127.0.0.1',3050)代码>当您将出站端设置为FB服务器127.0.0.1/3050(如果有)时发出声音,现在您必须找到隧道的入站端,并将入站h/p传递到ibase\u connect