使用tnsnames时,oci_connect ERR_CONNECTION_RESET

时间:2015-09-29 01:26:06

标签: php oci tnsnames

我正在尝试使用php连接到oracle数据库。当我尝试通过连接字符串/描述符进行连接时,它连接得很好,但是当我尝试使用tns名称进行连接时,整个操作停止并且chrome显示空白错误页面ERR_CONNECTION_RESER。我看到失败的响应,它是0字节,没有标题,没有正文......没有。

这是代码:

<?php

error_reporting(E_ALL);

ini_set('display_errors', 'On');

$connStr = "Some connection <string> copied from tnsnames.ora";
//$connStr = "Some connection <name> copied from tnsnames.ora";

try
{
    $conn = oci_connect('dev', '12345678', $connStr, 'utf8');
    if (!$conn)
    {
        $err = oci_error();
        var_dump($err);
    }
    oci_close($conn);
    echo "Success";
}
catch(Exception $e)
{
    $err = oci_error();
    var_dump($err);
    var_dump($e);
}

我查了一下,我的php可以看到     ORACLE_HOME     TNS_ADMIN 他们正指向正确的方向。 我在用     Windows 7 amd64     PHP 5.6.13 TS VC11     Apache 2.4.16 VC14     Instant Client 12.1.0.2

1 个答案:

答案 0 :(得分:0)

在这个问题上花了几个小时和睡眠没睡觉,我找到了解决方案。

我有一个sqlnet.ora文件,用于指定超时和其他网络属性。我们的数据库最近加入了该公司的领域,问题在于这一行:

以前

NAMES.DIRECTORY_PATH= (HOSTNAME, TNSNAMES, ONAMES, EZCONNECT, LDAP)
#########

解决方案

NAMES.DIRECTORY_PATH= (HOSTNAME, TNSNAMES, ONAMES, EZCONNECT, LDAP)
NAMES.DEFAULT_DOMAIN = FIRM.DOMAIN