我现在有2天时间尝试连接安装在运行Windows 7的计算机上的远程oracle数据库。
从PHP服务器端我安装了wampserver和oracle即时客户端11.2并启用了oci8 php扩展,我还在我的路径变量中添加了即时客户端文件夹。 从数据库方面,我已将TNS_ADMIN和ORACLE_HOME添加到路径变量。
这是我的php脚本:
$db= "(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.43)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = hasdrubal)
)
)";
$conn = oci_connect('SYSTEM', 'pass', $db);
if (!$conn)
{
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
else
{
die("connected");
}
我总是收到错误
oci_connect ORA-12541:TNS:没有听众
字符串在tsnames.ora中是相同的,并且侦听器正在运行。我在services.msc中查了一下。
你能帮我吗?
答案 0 :(得分:0)
如果您不想处理TNS,那么您可以使用Easy Connect string作为oci_connect()
的第3个参数,oci_connect() documentation中也会提及:
To use the Easy Connect naming method, PHP must be linked with
Oracle 10g or greater Client libraries.
The Easy Connect string for Oracle 10g is of the form:
[//]host_name[:port][/service_name].
From Oracle 11g, the syntax is:
[//]host_name[:port][/service_name][:server_type][/instance_name]
在你的情况下,它会是这样的:
//192.168.1.43:1521/hasdrubal