我试图从apache中读取操作系统变量HOMEPATH
,但getenv()
在浏览器中不起作用,但在命令行中起作用。在Apache服务器中传播操作系统变量
我读过几篇文章,他们说这是一个权限问题。但是当apache启动时,是否有办法将操作系统变量传播为apache env变量?
我试图从apache中读取操作系统变量HOMEPATH
,但getenv()
在浏览器中不起作用,但在命令行中起作用。在Apache服务器中传播操作系统变量
我读过几篇文章,他们说这是一个权限问题。但是当apache启动时,是否有办法将操作系统变量传播为apache env变量?
我假设你在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)会使这些变量可见。
谢谢。