2011-12-27 59 views
1

我很难让Django使用访问Oracle的Apache/mod_wsgi安装。我有这个安装一个CentOS 6主机上运行,​​而我在我的Apache日志收到此错误:如何在CentOS 6上导入cx_Oracle?

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

如果我试图从Python命令行导入cx_Oracle工作在根和Apache的用户罚款。我正确地设置了ORACLE_HOMELD_LIBRARY_PATH$ORACLE_HOME/lib):在~/.bashrc,/etc/ld.so.conf.d/oracle.conf,~/.bash_profile,任何地方我都可以设置env var。

我也试图使在/usr/lib硬链接或符号链接$ORACLE_HOME/lib/libclntsh.so.10.1,但我得到了一个权限错误,无论我从/usr多少chmod 777发放到/usr/lib和文件。

我加了ORACLE_HOMELD_LIBRARY_PATH/etc/sysconfig/httpd没有变化。

显然这个错误只有在Apache用户运行导入cx_Oracle命令时才会发生,尽管使用此用户登录我可以从Python解释器运行命令。

回答

2

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

+0

我已经建立了cx_Oracle没有这个选项。所以我可以只设置该var并重建它,它应该工作,或者我应该在重建之前先删除它? – lmisael 2011-12-28 00:47:51

+0

您需要从干净的cx_Oracle源代码开始,以确保不使用已经构建的版本。变量需要在用户环境中设置和导出。一旦完成构建/安装cx_Oracle,之后将该变量设置为不需要。 – 2011-12-28 01:52:22

+0

仍然没有工作。我收到相同的错误消息。我如何知道Apache使用哪个Python来运行WSGI?无论如何,我可以运行命令'import cx_Oracle'作为apache,这对我来说是最奇怪的。 – lmisael 2011-12-28 17:21:56