连接到Oracle数据库18C与OCI8

问题描述 投票:0回答:2

我已经建立了一个Oracle数据库18C和想从一个PHP文件连接到它,但是当我运行一个简单的连接测试,我收到了服务器错误的地方cant't似乎连接。我跑print_r(getLoaded_extensions());和输出数组它表明,我目前没有使用OCI8扩展为我想要的。我的连接测试文件包含以下

#!/usr/local/bin/php
<?php
putenv("ORACLE_HOME=/usr/lib/oracle/18.3/client64")

    $db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ***.***.*.**)(PORT = 1521)))(CONNECT_DATA=(SID=orcl)))" ;

    if($c = OCILogon("username", "password", $db))
    {
        echo "Successfully connected to Oracle.\n";
        OCILogoff($c);
    }
    else
    {
        $err = OCIError();
        echo "Connection failed." . $err[text];
    }

我不确定我是否把我putenv()函数错误的OCI.DLL文件的正确位置,或者,如果我需要安装在首位的扩展。谢谢

php sql database oracle oci
2个回答
1
投票

既然你说你检查你当前使用的扩展和OCI8是不存在的,我会继续前进,安装模块,使其能够在服务器上


0
投票

最可能的是,在18C默认安装创建一个容器DB(CDB)称为ORCL和PDB1(可插拔DB)..运行lsnrctl的统计,寻找创建的服务。然后,在DB连接,使用SERVICE_NAME而不是SID进行连接。服务名的值可以在LSNRCTL STAT的输出中可以看出

例。

 $db = "(DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = patronus.domain.com)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = pdb1.domain.com)
        )
      )" ;
© www.soinside.com 2019 - 2024. All rights reserved.