Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Azure中使用PHP OCI8 oci_connect时如何解决ORA-12154:TNS错误_Php_Oracle_Azure_Oci8 - Fatal编程技术网

在Azure中使用PHP OCI8 oci_connect时如何解决ORA-12154:TNS错误

在Azure中使用PHP OCI8 oci_connect时如何解决ORA-12154:TNS错误,php,oracle,azure,oci8,Php,Oracle,Azure,Oci8,我正在尝试连接到新合作伙伴11g 11.2.0.4.0版的oracle数据库,但收到以下错误: 警告:oci_connect():ORA-12545:连接失败,因为目标主机或对象不存在 合作伙伴确认提供的连接字符串是正确的 这是mine oci_connect()的当前结构和所使用的所述连接字符串: $connection_string = '(DESCRIPTION = (ADDRESS_LIST = (LOAD_BALANCE = ON)(FAILOVER = ON)(ADDRESS = (

我正在尝试连接到新合作伙伴11g 11.2.0.4.0版的oracle数据库,但收到以下错误:

警告:oci_connect():ORA-12545:连接失败,因为目标主机或对象不存在

合作伙伴确认提供的连接字符串是正确的

这是mine oci_connect()的当前结构和所使用的所述连接字符串:

$connection_string = '(DESCRIPTION = (ADDRESS_LIST = (LOAD_BALANCE = ON)(FAILOVER = ON)(ADDRESS = (PROTOCOL = TCP)(HOST = HOST)(PORT = 1521)))(CONNECT_DATA = (SERVICE_NAME = SERVICE_NAME)))'
$conn = oci_connect($username, $password, $connection_string, 'UTF8', OCI_DEFAULT);
但是,当使用以下结构时:

$connection_string = 'user/password@host:port/service_name'
$conn = oci_connect($username, $password, $connection_string, 'UTF8', OCI_DEFAULT);
它返回:

警告:oci_connect():ORA-12154:TNS:无法解析指定的连接标识符

为了清楚地了解我所做的工作,以下是我创建应用程序服务和安装oci8 php驱动程序的步骤:

  • 我创建了一个Azure应用程序服务,它使用PHP版本7.3.26
  • 在/home/site中创建了一个新的oracle目录
  • 将即时客户端添加到新的oracle目录中,在本例中是即时客户端Linux x86-64 18.5.0.0.0v(包含基本和sdk包)
  • 程序使用命令pecl install oci8-2.2.0
  • 在安装过程中,我指出了即时客户端的位置,成功安装了oci8驱动程序
  • 将新的oci8.so文件复制到/home/site内的ext目录中
  • 创建了一个php.ini文件,在中设置了扩展名=/home/site/ext/oci8.so
  • 将PHP_INI_SCAN_DIR配置定义为/usr/local/etc/PHP/conf.d:/home/site/INI
  • 将LD_库路径定义为/home/site/oracle/instantclient_18_5
  • 之后,我可以在phpinfo()页面上确认oci8扩展的存在

    按照本文件规定执行的步骤:

    我还将ORACLE_HOME设置定义为/HOME/site/ORACLE/instantclient_18_5,但没有区别

    我没有主意了,有人能告诉我是什么导致了这个问题,我该如何解决它


    编辑:


    在与合作伙伴进一步交谈后,很明显,考虑到当前的数据库配置,我无法连接到他们的数据库。正如Christopher Jones在评论中所指出的,这是一个网络问题,在这种情况下,缺乏适当的反馈。

    用户名和密码分别位于
    oci\u connect()
    的参数中,它们不应该也在连接字符串中。Sory@Barmar我试图将连接字符串更改为host:port/service\u name在第二个示例中,它不起作用。实际的连接字符串是什么样子的?这些都应该是私有IP或名称,这里没有安全风险。另请参阅:“虽然ORA-12154或ORA-12514等网络错误表明存在Oracle网络命名或配置问题,但根本原因可能是PHP环境设置不正确,Oracle库无法找到tnsnames.ORA配置文件。“嘿@miken32,如果这是一个新手问题,很抱歉,如果使用简易连接命名方法,我不应该在没有tnsnames.ora文件的情况下连接吗?