programing

PHP oci_connect() TNS: 연결 식별자(ORA-12154)를 확인할 수 없습니다.

muds 2023. 11. 7. 21:09
반응형

PHP oci_connect() TNS: 연결 식별자(ORA-12154)를 확인할 수 없습니다.

우분투 서버에서 PHP 코드를 테스트하고 있는데 "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)

그러나 PHP의 occi_connect 함수는 다음과 같은 경고를 표시합니다.

경고: oci_connect(): ORA-12154: TNS: 라인 62의 /usr/local/ipm5/wui/manager/123.bih에 지정된 연결 식별자를 확인할 수 없습니다.

물론 OCI8은 활성화되어 있으며(phpinfo를 통해 확인됨) 일부 환경(PATH,ORACLE_BASE,ORACLE_HOME,ORACLE_SID,TNS_ADMIN,LD_LIBRARY_PATH) 변수를 다음과 같이 설정합니다./etc/bash.bashrc

추천해주실 분 계신가요?무엇이 문제인지.

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() output "Environment" 부분을 확인합니다. ORACRAL_HOME, TNS_ADMIN이 없다면 php_module로 컴파일된 아파치에 대해 PHP 실행 환경에서 사용할 수 있도록 해야 합니다.

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

이는 연결할 수 없는 원격 데이터베이스를 사용하거나 VPN 연결에 액세스해야 하는 경우에도 발생할 수 있습니다.

언급URL : https://stackoverflow.com/questions/20345605/php-oci-connect-tnscould-not-resolve-the-connect-identifier-ora-12154

반응형