Estou tentando configurar o php / nginx para se conectar a um banco de dados oracle.
Tudo está em um único servidor (teste)
Eu instalei o nginx e configurei tudo bem.
Eu configurei php e php-fpm e isso funciona bem (testei algumas coisas php)
Eu instalei o módulo oci8 usando pecl install oci8 e forneci o caminho para o meu oracle_home, ele compilou muito bem.
mas não consigo me conectar a um banco de dados.
Eu tentei vários scripts.
Eu sou muito novo no oracle.
o log de erros da www para php-fpm diz para verificar meu caminho da biblioteca oracle_home e ld. Eu defino ambos no meu script php como um teste e ainda falha.
alguma ideia?
<?php
PutEnv("ORACLE_SID=orcl");
PutEnv("ORACLE_HOME=/opt/app/oracle/product/11.2.0/dbhome_1/");
PutEnv("TNS_ADMIN=/opt/app/oracle/product/11.2.0/dbhome_1/network/admin");
PutEnv("LD_LIBRARY_PATH=/opt/app/oracle/product/11.2.0/dbhome_1/lib");
$c = oci_connect("testuser", "testpassword", "127.0.0.1");
if (!$c) {
echo "Unable to connect: " . var_dump( oci_error() );
die();
}
ETCETC
do log de erros:
[10-Dec-2010 17:25:58] PHP Warning: oci_connect(): OCIEnvNlsCreate() failed. There is something wrong with your system - please check that ORACLE_HOME and LD_LIBRARY_PATH are set and point to the right directories in /usr/share/nginx/html/orcl2.php on line 6
EDIT: Eu adicionei o usuário nginx ao grupo oinstall para fins de teste e agora recebo mensagens de erro melhores, então estou ficando ainda mais.
o erro agora é:
array(4) { ["code"]=> int(12504) ["message"]=> string(70) "ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA" ["offset"]=> int(0) ["sqltext"]=> string(0) "" } Unable to connect:
EDIT2:
Depois de fazer o seguinte, agora posso usar o comando sqlplus para conectar-me ao meu usuário de teste, mas o php ainda falha.
SQL> alter system set LOCAL_LISTENER='10.99.101.2' scope=both;
SQL> alter system register;
SQL> alter system set SERVICE_NAMES='10.99.101.2' scope=both;
EDIT3: se eu usar a linha de comando php para executar o meu script de teste, ele funciona bem, então algo está errado com variáveis Nginx / env para o nginx.
EDIT4:
Listener.ora:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = /opt/app/oracle/product/11.2.0/dbhome_1/)
(PROGRAM = extproc)
)
(SID_DESC=
(GLOBAL_DBNAME=orcl)
(ORACLE_HOME=/opt/app/oracle/product/11.2.0/dbhome_1/)
(SID_NAME=orcl)
)
)
SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=OFF
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.99.101.2)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /opt/app/oracle
tnsnames.ora:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.99.101.2)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
sqlnet.ora
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
ADR_BASE = /opt/app/oracle