0

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

然后我从文件中删除了;之前extension=php_oci8.dll和之后。然后首先我尝试连接我的本地数据库:extension=php_oci8_11g.dllphp.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显但是当我尝试访问另一台电脑的 oracle 数据库时,即使用$tns_turjo然后它not回显并且错误是

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

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

注意 在每次启动 Apache 时从 php.ini 文件启用 .dll 扩展后,我会在 xampp 中弹出警告,即Module 'oci8' is already loaded

如何解决远程连接问题?

4

1 回答 1

0

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

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

  1. 您 PC 上的防火墙阻止了连接。
  2. 远程 PC 上的防火墙阻止了连接。
  3. TNS 侦听器未在远程 PC 上运行。
  4. 连接字符串错误。

没有 PHP 可以连接到远程 PC 吗?您是否尝试过通过 SQL*Plus 或只是一个tnsping命令?


注意 在每次启动 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应启用,因为那是您安装的版本。

于 2015-05-25T11:48:33.683 回答