2015-08-29 1 views
0

Je viens de configurer sqlplus connect à la base de données Oracle distante et commencer à résoudre les problèmes de configuration de la connexion php à la même base de données. Lors de la configuration de sqlplus connect, l'hôte AVAYAPDSDB a été créé et utilisé. En ce moment j'essayais de l'employer dans la connexion d'hôte de php et confronté au problème, qui a semblé être sur ce site parmi d'autres utilisateurs, mais pas résolu ou n'a pas commenté correctement.Oracle ODBC unixODBC] [Gestionnaire de pilotes] Impossible d'ouvrir la lib

Donc. Ma demande est:

$dbh = odbc_connect("DRIVER={Oracle 11g ODBC driver};DSN=AVAYAPDSDB","******","******"); 

La sortie dans Trase du navigateur est que:

Warning: odbc_connect(): SQL error: [unixODBC][Driver Manager]Can't open lib '/usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1' : file not found 

je double & & triple vérifié est ce fichier .so dans ce répertoire ou non, et a même essayé de le déplacer vers répertoire moins profond comme /usr/lib & /usr/lib64 avec changement de route vers driver dans odbcinst.ini mais toujours sans progression.

ici est oracle/lib direcrory:

[[email protected] lib]# ls -l 
total 187144 
-rw-r--r-- 1 root root  368 Aug 24 2013 glogin.sql 
-rw-r--r-- 1 root root 53865194 Aug 24 2013 libclntsh.so.11.1 
-rw-r--r-- 1 root root 7996693 Aug 24 2013 libnnz11.so 
-rw-r--r-- 1 root root 1973074 Aug 24 2013 libocci.so.11.1 
-rw-r--r-- 1 root root 118738042 Aug 24 2013 libociei.so 
-rw-r--r-- 1 root root 164942 Aug 24 2013 libocijdbc11.so 
-rw-r--r-- 1 root root 1502287 Aug 24 2013 libsqlplusic.so 
-rw-r--r-- 1 root root 1469542 Aug 24 2013 libsqlplus.so 
-rw-r--r-- 1 root root 1003582 Aug 24 2013 libsqora.so.11.1 
-rw-r--r-- 1 root root 2091135 Aug 24 2013 ojdbc5.jar 
-rw-r--r-- 1 root root 2739616 Aug 24 2013 ojdbc6.jar 
-rw-r--r-- 1 root root  66779 Aug 24 2013 xstreams.jar 

Voici mon ldd de ce fichier:

[[email protected] lib]# ldd /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1 
ldd: warning: you do not have execution permission for `/usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1' 
     linux-vdso.so.1 => (0x00007fff0ddff000) 
     libdl.so.2 => /lib64/libdl.so.2 (0x00007f25b694b000) 
     libm.so.6 => /lib64/libm.so.6 (0x00007f25b66c6000) 
     libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f25b64a9000) 
     libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f25b6290000) 
     libclntsh.so.11.1 (0x00007f25b3920000) 
     libodbcinst.so.1 => /usr/lib64/libodbcinst.so.1 (0x00007f25b3709000) 
     libc.so.6 => /lib64/libc.so.6 (0x00007f25b3375000) 
     /lib64/ld-linux-x86-64.so.2 (0x0000003b8fe00000) 
     libnnz11.so (0x00007f25b2fa7000) 
     libaio.so.1 => /lib64/libaio.so.1 (0x00007f25b2da6000) 

Afin de ne pas paraître trop confiant, voici mon odbcinst.ini qui fonctionne avec sqlplus grandement:

[Oracle 11g ODBC driver] 
Description  = Oracle ODBC driver for Oracle 11g 
Driver   = /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1 
Setup   = 
FileUsage  = 
CPTimeout  = 
CPReuse   = 
Driver Logging = 7 

..et odbc.ini:

[AVAYAPDSDB] 
Driver = Oracle 11g ODBC driver 
DSN = Oracle 11g ODBC driver 
ServerName = ccpdsdko 
UserID = reporter 
Password = reporter 

Certaines personnes demandaient de vérifier si le LD_LIBRARY_PATH a été mis .. bien, le mien est fixé:

[[email protected] lib]# echo $LD_LIBRARY_PATH 
:/opt/IBM/informix/lib:/opt/IBM/informix/lib/cli:/opt/IBM/informix/lib/esql:/opt/IBM/informix/lib:/opt/IBM/informix/lib/cli:/opt/IBM/informix/lib/esql:/usr/lib/oracle/11.2/client64/lib/ 

je serais vraiment thankfull pour toute aide! Il y a quelques messages sur ce sujet sur ce site, mais le dernier commentaire daté de 2014 .. et le problème n'a pas été résolu, ou pas bien commenté sur la solution

+0

Une particularité est ce "_ldd: avertissement: vous n'avez pas d'autorisation d'exécution for_". Que se passe-t-il si vous avez activé le bit exécutable sur tous les fichiers 'so' du répertoire Oracle. Quelque chose comme 'chmod ugo + x/usr/lib/oracle/11.2/client64/lib /' Rerun 'ldd' voir si l'avertissement disparaît et ensuite essayer de lancer votre application. –

+0

utilisé votre commande pour le répertoire et pour le fichier .so. L'avertissement a disparu. script PHP indique la même erreur. – Altenrion

+0

Savez-vous quel utilisateur utilise votre script php? Il est possible que le chemin d'accès soit indisponible (autorisations non correctes) pour permettre à cet utilisateur d'accéder au répertoire lib avec Oracle. Un test peut consister à se connecter en tant qu'utilisateur et à voir si vous pouvez accéder au répertoire. En tant que root, vous pouvez accéder à tout.C'est la seule raison pour laquelle je peux penser que le fichier ne peut pas être trouvé mais il est là. –

Répondre

0

Vérifiez l'état de SELinux en utilisant la commande:

# getenforce 

Si la réponse est que vous pouvez essayer l'application exécuter la commande:

# setenforce 0 

Cette commande est temporaire; vous serez bloqué après le redémarrage du système.