Подключение к Oracle с помощью oci_connect

Я пытаюсь установить успешное соединение с Oracle с помощью PHP.

Вот как выглядит моя строка подключения:

<?php
   $conn = oci_connect("USER", "PASS", "LOSINGMINDHOST");
   if (!$conn) {
       $e = oci_error();
       error_log(trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR));
   }

   oci_close($conn);
?>

Получение следующей ошибки:

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

Что указывает на строку с oci_connect.

Я на Windows Server 2019.

Файл php.ini был обновлен и теперь включает следующее:

extension=oci8_12c

Я подтвердил, что указанный выше файл dll действительно находится в папке ext, указанной как:

php_oci8_12c.dll

Не уверен, почему файл php.ini не включает полное имя файла dll.

Сервер был установлен с 64-битным мгновенным клиентом Ocale 12g.

Мы подтвердили подключение с помощью клиента администратора источника данных ODBC с помощью файла tnsnames.ora.

У нас также есть файл listener.ora, который выглядит так:

PROD_MIR =
 (DESCRIPTION =
  (ADDRESS_LIST =
  (ADDRESS = (COMMUNITY = ttp.world)(PROTOCOL = TTP)(Host = LOSINGMINDHOST)(Port = 1524))
  (ADDRESS = (COMMUNITY = ttp.world)(PROTOCOL = TTP)(Host = LOSINGMINDHOST)(Port = 1551))
  (ADDRESS = (COMMUNITY = ttp.world)(PROTOCOL = TTP)(Host = LOSINGMINDHOST)(Port = 1538))
)
(CONNECT_DATA =
  (SERVICE_NAME = PROD)
)
)

Мы добавили путь TNS_ADMIN к переменным среды на сервере.

Мы уже перезапустили службы и даже перезагрузили сервер.


person John Beasley    schedule 10.11.2020    source источник
comment
Третий параметр, lossmymindhost, — это запись в tnsnames.ora?   -  person Felippe Duarte    schedule 10.11.2020
comment
@FelippeDuarte - я обновил свой вопрос, включив в него описание файла tnsnames.ora.   -  person John Beasley    schedule 10.11.2020
comment
Вместо этого используйте PROD_MIR   -  person Felippe Duarte    schedule 10.11.2020
comment
@FelippeDuarte - я больше не получаю сообщение об ошибке. Вы, сэр, спасли мне жизнь.   -  person John Beasley    schedule 10.11.2020
comment
Нет проблем @JohnBeasley. Я написал ответ, чтобы помочь другим с той же проблемой.   -  person Felippe Duarte    schedule 10.11.2020


Ответы (1)


В документах (https://www.php.net/manual/en/function.oci-connect.php) говорит:

oci_connect (строка $username, строка $password [, строка $connection_string [, строка $character_set [, int $session_mode]]]): ресурс

connection_string Содержит экземпляр Oracle для подключения. Это может быть строка » Easy Connect, или имя Connect из файла tnsnames.ora или имя локального экземпляра Oracle.

Это был ваш случай, используйте правильное имя соединения tnsnames.ora.

person Felippe Duarte    schedule 10.11.2020