PHP oci connect() TNS: не удалось разрешить идентификатор подключения (ORA-12154)


Я тестирую некоторый PHP-код на сервере Ubuntu, и подключение к базе данных oracle проверяется командой "tnsping"

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.14)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = ORCL) (SID = ORCL)))
OK (10 msec)

Но функция oci_connect в PHP показывает предупреждение, например, как

Предупреждение: oci_connect(): ORA-12154: TNS: не удалось разрешить идентификатор подключения, указанный в /usr/local/ipm5/wui/manager/123.bih в строке 6 2

Конечно, OCI8 включен (проверяется через phpinfo) и некоторая среда(PATH,ORACLE_BASE,ORACLE_HOME,ORACLE_SID,TNS_ADMIN,LD_LIBRARY_PATH ) переменные устанавливаются в /etc/bash.bashrc

Кто-нибудь рекомендует?? в чем проблема.

 6
Author: Passerby, 2013-12-03

1 answers

Вместо ORCL вы можете поместить всю строку в oci_connect

(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.14)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = ORCL) (SID = ORCL)))

PHP-код:

oci_connect($username, $password, '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.14)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = ORCL) (SID = ORCL)))');

Проверьте вывод phpinfo() части "Среда", если у вас нет ORACLE_HOME, TNS_ADMIN, вам нужно сделать их доступными для вашей среды PHP, для apache, скомпилированного с помощью php_module

export ORACLE_HOME=/path/to/oracle_home
export TNS_ADMIN=/path/to/tns_admin
apachectl start

Для php-cgi или php-fpm

export ORACLE_HOME=/path/to/oracle_home
export TNS_ADMIN=/path/to/tns_admin
/script/to/start/fpm
 12
Author: ray, 2013-12-04 01:48:49