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
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. –
utilisé votre commande pour le répertoire et pour le fichier .so. L'avertissement a disparu. script PHP indique la même erreur. – Altenrion
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à. –