1

我很难让 Django 与我的 Apache/mod_wsgi 安装一起访问 Oracle。我在 CentOS 6 主机上运行此设置,并且在我的 Apache 日志中收到此错误:

Error loading cx_Oracle module: libclntsh.so.10.1: cannot open shared object file: No such file or directory

如果我尝试cx_Oracle从 Python 命令行导入,它在 root 和 apache 用户中都可以正常工作。我正确设置了ORACLE_HOMEand LD_LIBRARY_PATH( $ORACLE_HOME/lib):在~/.bashrc, /etc/ld.so.conf.d/oracle.conf, ~/.bash_profile, 任何我可以设置环境变量的地方。

我也尝试过对 in 进行硬链接或符号链接$ORACLE_HOME/lib/libclntsh.so.10.1,但无论我从文件中发出/usr/lib多少个,我都收到了权限错误。chmod 777/usr/usr/lib

我添加了andORACLE_HOME没有改变。LD_LIBRARY_PATH/etc/sysconfig/httpd

显然,此错误仅在 Apache 用户运行 import cx_Oracle 命令时发生,尽管使用此用户登录我可以从 Python 解释器运行该命令。

4

2 回答 2

2

当您从源代码构建 cx_Oracle 时,将 LD_RUN_PATH 环境变量设置为包含 Oracle .so 文件的 lib 目录的路径,它将将该位置嵌入到 cx_Oracle .so 中,并且将知道在运行时从何处获取 libclntsh.so 而无需 LD_LIBRARY_PATH放。

于 2011-12-27T22:15:38.890 回答
1

有一个更好的解决方案,无需重新安装..“将 /app/oracle/oracle/product/10.2.0/db_1/lib 附加到 /etc/ld.so.conf 并运行 ldconfig。” 来自 http://catherinedevlin.blogspot.com/2005/10/cxoracle-and-ubuntu.html

于 2012-01-08T04:02:29.240 回答