HOMEPATH
我正在尝试从 apache读取操作系统变量,但getenv()
在浏览器中不起作用,但在命令行中起作用。
我已经阅读了几篇文章,他们说这是一个权限问题。但是有没有办法在 apache 启动时将操作系统变量传播为 apache env 变量?
HOMEPATH
我正在尝试从 apache读取操作系统变量,但getenv()
在浏览器中不起作用,但在命令行中起作用。
我已经阅读了几篇文章,他们说这是一个权限问题。但是有没有办法在 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)来使这些变量可见。
谢谢。