我在Ubuntu服务器上测试一些PHP代码,并通过“tnsping”命令检查oracle数据库连接
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中的oci_connect函数会显示类似
的警告警告:oci_connect():ORA-12154:TNS:无法解析第6行上/usr/local/ipm5/wui/manager/123.bih中指定的连接标识符
当然,OCI8已启用(通过phpinfo检查)和某些环境(PATH
,ORACLE_BASE
,ORACLE_HOME
,ORACLE_SID
,TNS_ADMIN
,{ {1}})变量设置为LD_LIBRARY_PATH
有人推荐??问题是什么。
答案 0 :(得分:15)
而不是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()输出“Environment”部分,如果你没有ORACLE_HOME,TNS_ADMIN,你需要让那些可用的PHP运行环境, 用于使用php_module编译的apache
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
答案 1 :(得分:0)
当使用不可访问的远程数据库或需要访问VPN连接时,也会发生这种情况。