2013-07-04 38 views
1

我试图从apache中读取操作系统变量HOMEPATH,但getenv()在浏览器中不起作用,但在命令行中起作用。在Apache服务器中传播操作系统变量

我读过几篇文章,他们说这是一个权限问题。但是当apache启动时,是否有办法将操作系统变量传播为apache env变量?

回答

0

我假设你在Linux上,如果你没有,我只是张贴这这里记录(我的搜索没有结果,我在CentOS 6.5)

据我了解,没有办法让apache直接访问环境变量,包括启动apache进程的用户环境变量以及在/etc/profile.d启动脚本中指定的全局环境变量。

由于我使用bash,我有一个variables.bashrc文件,我从我的〜/ .bashrc中获取。这个variables.bashrc声明了我的用户环境变量。在我的Apache启动脚本(/etc/init.d/httpd)我已经添加了一行

. /path/to/variables.bashrc 

是源相同的变量我的用户访问。这使得这些环境变量可供apache使用。

Apache可能会收到这些变量,但它也可以阻止这些变量,除非您明确地声明将它们传递给脚本。这将使用mod_env所以你必须确保该模块被加载所以你必须

PassEnv VARIABLE_NAME 

添加到您配置的目录/虚拟主机。例如...

<Directory "/path/to/cgi/scripts/"> 
    AllowOverride None 
    Options None 
    Order allow,deny 
    Allow from all 
    PassEnv VARIABLE_NAME 
</Directory> 

这将使其可用于您的CGI脚本或任何可能试图访问环境变量的脚本。

我不确定这是否是最优雅的方法来解决这个问题,所以我有兴趣了解其他人为解决此问题所做的工作......也许有些自动化方式(mod_something)会使这些变量可见。

谢谢。

相关问题