使用PHP

时间:2016-02-16 17:32:36

标签: php oracle ssh xampp phpseclib

我想使用PHP连接到Oracle数据库,这需要端口转发。 这是设置。 目前我使用PuTTy连接到Oracle Db。我喂了

主机IP:172.XX.XX.111端口:22

隧道设置 源端口:L19005

目的地:172.XX.XX.40:1521

输入用户名/密码后,我可以连接需要TNS配置的sqldeveloper。

现在我想使用PHP执行相同的活动。这是我到目前为止所做的事情

set_include_path(get_include_path().'\phpseclib');
include('Net/SSH2.php');

$ssh = new Net_SSH2('172.XX.XX.111');
if (!$ssh->login('userid', 'password')) {
    exit('Login Failed');
}
$ssh->write("ssh -L19005:172.XX.XX.40:1521 172.XX.XX.111\n");
$ssh->write("password\n");

$connect='(DESCRIPTION=(ADDRESS= (PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=19005))(CONNECT_DATA = (SID = connect)))';
$conn = oci_connect('Db_username', 'Db_password', $connect);
if ($conn)
{echo 'True';}

我也使用了ssh2_connect函数。

$connection = ssh2_connect('172.XX.XX.111', 22);
if (ssh2_auth_password($connection, 'userid', 'password'))
{
echo 'true';
}
ssh2_exec($connection,"ssh -L19005:172.XX.XX.40:1521 172.XX.XX.111","\n");
ssh2_exec($connection,"password","\n");

$connect='(DESCRIPTION=(ADDRESS= (PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=19005))(CONNECT_DATA = (SID = connect)))';
$conn = oci_connect('Db_username', 'Db_password', $connect);
if ($conn)
{echo 'True';}

在这两种情况下,我都会收到以下错误。

oci_connect(): ORA-12541: TNS:no listener in C:\xampp\htdocs\USAGE\index.php

我正在使用XAMPP3.2.2和PHP5.5。

请帮忙。我搜索过很多但找不到与我的问题有关的任何内容。

1 个答案:

答案 0 :(得分:0)

phpseclib不进行隧道掘进。你期望它做的是让PHP在端口127.0.0.1:19005上创建服务器,但此时你需要一个SSH服务器 - 而不是SSH客户端。

我的建议:使用autossh。