Oracle ODBC unixODBC] [Driver Manager]无法打开lib

时间:2015-08-29 14:45:44

标签: php linux oracle odbc unixodbc

我刚刚设置了sqlplus连接到远程Oracle数据库,并开始解决配置php连接到同一数据库的问题。

配置sqlplus connect时,创建并使用了主机AVAYAPDSDB。现在我试图在PHP的主机连接中使用它并面对问题,这似乎是在这个网站上的其他用户,但没有解决或没有正确评论。

因此。我的要求是:

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

浏览器中的输出是:

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

我加倍&&三重检查是这个.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

..和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年..问题没有得到解决,或者没有很好地评论解决方案

1 个答案:

答案 0 :(得分:0)

使用以下命令检查SELinux状态:

# getenforce

如果答案是强制执行,您可以尝试执行命令:

# setenforce 0

这个命令是暂时的;系统重启后你将被阻止。