我刚刚设置了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年..问题没有得到解决,或者没有很好地评论解决方案
答案 0 :(得分:0)
使用以下命令检查SELinux状态:
# getenforce
如果答案是强制执行,您可以尝试执行命令:
# setenforce 0
这个命令是暂时的;系统重启后你将被阻止。