У меня есть эта строка подключения на более старом сервере, который отлично работает и подключается к удаленному серверу Oracle.
На этом новом сервере я установил oracle Instant Client simple and devel и php pecl oci8. Ниже приведен скриншот файла oci8.
Вот код, который я использую для подключения
$db = "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" . $ORACLE_HOST . ")(PORT=" . $ORACLE_PORT . ")))(CONNECT_DATA=(SID=" . $ORACLE_DB . ")))";
$this->dbh = oci_connect($ORACLE_USER, $ORACLE_PASS, $db);
Но когда я пытаюсь подключиться к Oracle, я получаю эту ошибку
oci_connect(): Error while trying to retrieve text for error ORA-28547
Если я ввожу случайное имя хоста, я получаю ORA-12154
ошибка, которая имеет смысл. Если я ввожу случайный SID, я получаю ORA-12514
ошибка, которая имеет смысл. Если я ввожу случайный порт, я получаю ORA-12545
ошибка, которая имеет смысл, если я nc
сервер и порт я получаю этот результат
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 10.10.40.21:1521.
Ncat: 0 bytes sent, 0 bytes received in 0.02 seconds.
Я использую систему Centos 7 64bit, php 5.6.
Кто-нибудь знает, почему это могло произойти?
Кажется, хотя phpinfo
может обнаружить клиент Oracle версии 18.5, но не может получить ORACLE_HOME
каталог
Если вы только установите
SetEnv ORACLE_HOME "/usr/lib/oracle/18.5/client64/lib"
в файле конфигурации виртуального хоста клиента
/etc/httpd/conf/sites-available/client.vhost
Это добавляет ORACLE_HOME
к PHP Variables
только который имеет НЕТ ЭФФЕКТА устранение проблемы
Вместо
Вам нужно добавить
env[ORACLE_HOME] = /usr/lib/oracle/18.5/client64/lib
в клиентском php-fpm
файл конфигурации
/etc/php-fpm.d/client.conf
Это добавляет ORACLE_HOME
под обоими PHP Variables
и Environment
что устраняет проблему.
У вас две проблемы:
echo $ORACLE_HOME
устанавливать? Ваш sqlnet.ora
настроить для удобного подключения? (Находится в $ORACLE_HOME//network/admin
) Проверять, выписываться Документация по Oracle Net Services по настройке; у вас должна быть строка, похожая на:
NAMES.DIRECTORY_PATH=(ezconnect, tnsnames)
Также см. Это руководство по устранению неполадок.