我想使用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。
请帮忙。我搜索过很多但找不到与我的问题有关的任何内容。
答案 0 :(得分:0)
phpseclib不进行隧道掘进。你期望它做的是让PHP在端口127.0.0.1:19005上创建服务器,但此时你需要一个SSH服务器 - 而不是SSH客户端。
我的建议:使用autossh。