我的项目的总体目标是连接到另一台服务器上的Oracle数据库,使用PHP进行查询,以便我可以使用JavaScript创建数据图表。
我的服务器正在运行CentOS
到目前为止,我已经按照Web上的说明进行操作,并在我的服务器和Oracle Insant Client上安装了oci8。
然后我创建了一个shell脚本来隧道到远程服务器。
接下来,我创建了一个测试php文件来尝试连接数据库
<?php
$conn = oci_connect('name', 'pw', 'servername/databasename');
if(!$conn){
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
oci_close($conn);
?>
当我在浏览器中加载它时,我收到以下错误
警告:oci_connect():ORA-12541:TNS:第3行/var/www/html/djc/ociConnect.php中没有侦听器致命错误:ORA-12541:TNS:/ var / www /中没有侦听器第6行的html / djc / ociConnect.php
我已经完成了对错误的研究,我知道主要的问题是 lsnrctl start
不起作用,我没有lsnrctl函数。我也没有TNSNAMES.ORA或LISTENER.ORA文件。
我不知道如何让lsnrctl在我的服务器上工作,或者我是否从正确的角度攻击这个问题。
还尝试启动sqlplus(我从rpm安装),返回找不到的命令。
有什么建议吗? 我甚至不确定我是否要在正确的庄园中实现我的目标,所以非常感谢任何帮助。
答案 0 :(得分:2)
我以前连接过:
//Putenv("NLS_LANG=SPANISH_SPAIN.WE8ISO8859P15");
$db="(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)
(HOST=$GLOBALS[dbhost])(PORT=$GLOBALS[dbport])
)
)
(CONNECT_DATA=(SID=$GLOBALS[dbname]))
)";
$conn = OCILogon($GLOBALS['dbuser'],$GLOBALS['dbpasswd'],$db);
相应地更换$ GLOBALS ['dbuser'],$ GLOBALS ['dbpasswd'],$ GLOBALS [dbhost],$ GLOBALS [dbname],$ GLOBALS [dbport]。