使用php连接到oracle数据库时出现oci_connect警告

时间:2015-06-05 10:34:23

标签: php oracle

我现在有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中查了一下。

你能帮我吗?

1 个答案:

答案 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