ame*_*ade 5 python apache cgi cx-oracle
我正在编写一个使用Oracle数据库的python上的web服务.我已经安装并运行了cx_Oracle但是当我使用Apache将我的python代码作为CGI运行时,我遇到了一些问题.
例如,以下代码在命令行中完美运行:
#!/usr/bin/python
import os
import cx_Oracle
import defs as df
os.putenv('ORACLE_HOME', '/oracledb/10.2.0/')
os.putenv('LD_LIBRARY_PATH', '/oracledb/10.2.0/lib')
con = cx_Oracle.Connection(df.DB_USER, df.DB_PASS, df.DB_SID)
print con
Run Code Online (Sandbox Code Playgroud)
但是当我以CGI运行它时,我在apache错误日志中得到了"cx_Oracle.InterfaceError:无法获取Oracle环境句柄".
我在网上搜索,每个人都说我必须设置ORACLE_HOME
和LD_LIBRARY_PATH
环境变量.不知何故,CGI脚本无法访问此环境变量,即使我使用os.putenv
您在代码中看到它们来定义它们也是如此.
我做错了什么?谢谢!
小智 5
这对我有用:
os.putenv('ORACLE_HOME', '/oracle/client/v10.2.0.3-64bit')
os.putenv('LD_LIBRARY_PATH', '/oracle/client/v10.2.0.3-64bit/lib')
os.environ['ORACLE_HOME'] = '/oracle/client/v10.2.0.3-64bit'
os.environ['LD_LIBRARY_PATH'] = '/oracle/client/v10.2.0.3-64bit/lib'
Run Code Online (Sandbox Code Playgroud)
先注意putenv
,然后更新environ
.
我已经成功解决了这个问题。
不知何故,apache 使用的用户和组无权访问环境变量。我通过将 apache 使用的用户和组更改为我确定有权访问此变量的用户解决了该问题。
奇怪(并且令人沮丧)的是,使用 Python 设置这些变量是如此困难。
感谢所有回答我问题的人!