Python + CGI脚本无法访问环境变量

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_HOMELD_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.


ame*_*ade 2

我已经成功解决了这个问题。

不知何故,apache 使用的用户和组无权访问环境变量。我通过将 apache 使用的用户和组更改为我确定有权访问此变量的用户解决了该问题。

奇怪(并且令人沮丧)的是,使用 Python 设置这些变量是如此困难。

感谢所有回答我问题的人!