php(xampp)的oracle连接问题

时间:2015-05-25 09:38:19

标签: php oci ora-12170

我需要将oracle 11g数据库与我的xampp服务器连接,我需要本地和远程连接。为此,我首先安装了oracle 11g express版本并下载了instantclient-basic-nt-11.2.0.4.0并将解压缩的文件夹instantclient_11_2放在C:\中然后我设置了环境变量(系统变量)和我的路径值看起来像path=C:\oraclexe\app\oracle\product\11.2.0\server\bin;C:\instantclient_11_2

然后我从;文件中删除了extension=php_oci8.dllextension=php_oci8_11g.dll之前的php.ini。然后我首先尝试连接我的本地数据库:

$tns_turjo = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.13)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))'; // tns of another pc
$tns_ishrak = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.18)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))'; // tns of my pc

$conn = oci_connect('system', 'cibl123*#', $tns_turjo);
if($conn) {
    echo "connected";
}
else {
    echo "not";
}

当我通过$tns_ishrak时,它回显connected但是当我尝试访问另一台PC的oracle数据库时,即使用$tns_turjo然后它回显not,错误是

Message: oci_connect(): ORA-12170: TNS:Connect timeout occurred

我在连接到另一台电脑时也更改了用户名和密码。

N.B。每当我启动Apache时从php.ini文件启用.dll扩展名后,我会在xampp中收到弹出警告Module 'oci8' is already loaded

如何解决远程连接问题?

1 个答案:

答案 0 :(得分:0)

您不需要安装InstantClient; Oracle XE包含完整的Oracle客户端。

远程连接不起作用的原因有很多,但最常见的(根据我的经验)是:

  1. PC上的防火墙阻止了连接。
  2. 远程PC上的防火墙阻止连接。
  3. TNS监听器未在远程PC上运行。
  4. 连接字符串错误。
  5. 您可以在没有PHP的情况下连接到远程PC吗?您是通过SQL * Plus还是仅仅tnsping命令尝试过的?

      

    N.B。每当我启动Apache时从php.ini文件启用.dll扩展名后,我会在xampp中收到弹出警告Module 'oci8' is already loaded

    这很明显:你试图不止一次加载OCI模块。您应该只启用一个 OCI模块,这样如果您在php.ini文件中出现类似下面的内容,那就是问题所在:

    extension=php_oci8.dll
    extension=php_oci8_11g.dll
    

    只应启用php_oci8_11g.dll,因为您已经安装了该版本。