Oracle ODBC unixODBC] [Диспетчер драйверов] Не удается открыть lib

1

Я только что установил соединение sqlplus с удаленной базой данных Oracle и начну решать проблемы с настройкой подключения php к той же базе данных.

При настройке подключения sqlplus был создан и использован хост AVAYAPDSDB. Прямо сейчас я пытался использовать его в хост-соединении с php и сталкивался с проблемой, которая, как оказалось, находилась на этом сайте среди других пользователей, но не была решена или не была правильно прокомментирована.

Так. Моя просьба:

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

Вывод в браузере trase заключается в следующем:

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

Я double && triple checked - это.so файл в этом каталоге или нет, и даже попытался переместить его в менее глубокую директорию, например /usr/lib & /usr/lib64, с изменением маршрута на драйвер в odbcinst.ini, но все же без прогресса,

здесь есть oracle/lib direcrory:

[root@cc-allplus 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

Вот мой ldd этого файла:

[root@cc-allplus 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)

Чтобы не выглядеть слишком уверенно, вот мой odbcinst.ini, который очень сильно работает с sqlplus:

[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

..and odbc.ini:

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

Некоторые люди просили проверить, установлен ли LD_LIBRARY_PATH.. ну, мой установлен:

[root@cc-allplus 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/

Я бы очень благодарен за любую помощь! Есть несколько сообщений по этой теме на этом сайте, но последний комментарий там был датирован 2014 годом.. и проблема не была решена или не была прокомментирована о решении

  • 0
    Одна особенность - это « ldd: warning: у вас нет разрешения на выполнение ». Что произойдет, если вы включите исполняемый бит для всех файлов so в каталоге oracle. Что-то вроде chmod ugo+x /usr/lib/oracle/11.2/client64/lib/ Перезапустите ldd посмотрите, исчезло ли предупреждение, а затем попробуйте запустить приложение.
  • 0
    использовал вашу команду для каталога & для .so файла. Предупреждение исчезло. PHP-скрипт сообщает ту же ошибку.
Показать ещё 6 комментариев
Теги:
odbc
unixodbc

1 ответ

0

Проверьте состояние SELinux с помощью команды:

# getenforce

Если ответ "Принуждение", вы можете попробовать выполнить команду:

# setenforce 0

Эта команда является временной; вы будете заблокированы после перезагрузки системы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню