Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP通过SSH连接到远程托管的Firebird数据库_Php_Ssh_Firebird - Fatal编程技术网

如何使用PHP通过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_

我需要创建一个PHP脚本,通过SSH隧道连接到远程主机,连接到Firebird数据库并访问一些数据。 我环顾四周,成功地实现了SSH连接和隧道连接,但之后我不知道如何正确连接到Firebird

下面是我现在使用的代码:

$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