我想在启动时将linux中的环境变量传递给apache。
导出MYVAR=5 --我在命令行中定义了我的环境变量
PassEnv MYVAR -将apache设置为导入apache配置文件中的变量
apachectl重新启动--当我重新启动apache时,我不会收到错误消息。但是,我注意到,如果我在第一步中不创建环境变量,就会收到警告消息,所以必须在这里工作。
echo $_SERVER‘’MYVAR‘--我尝试在PHP中访问环境变量,但没有定义它
我观察到,如果我尝试PassEnv一个已经存在的环境变量(一个我自己还没有创建的环境变量),它可以正常工作。SetEnv指令也可以正常工作。
我非常希望在不将其写入文件的情况下,动态地将一个环境变量传递给apache。非常感激的帮助。
我用的是CentOS,PHP5和Apache2。
谢谢。
如果我直接使用httpd调用apache启动,而不使用apachectl,这是一个脚本,那么环境变量似乎就会被传递。我认为“导出”会将变量导出到shell脚本否?我不是linux专家,所以请原谅我缺乏知识。
发布于 2010-05-31 08:57:46
如果希望将环境变量传递给apache,则应确保为apache正在运行的环境定义上述环境变量。要做到这一点,最简单的选择是向envvars添加一个export MYVAR=value行(应该位于/etc/apache2中)或启动apache的脚本(in /etc/init.d),并在您的PassEnv配置中需要它的地方添加PassEnv MYVAR。
重新启动apache应该确保MYVAR环境变量被传递。AFAIK在apache运行时无法更改这个var的值.
CentOS:http://php.dzone.com/news/inserting-variable-headers-apa&default=false&zid=159&browser=16&mid=0&refresh=0的相关信息
发布于 2010-06-01 14:24:40
应该使用超全局$_ENV访问环境变量。
$_ENV['MYVAR']
http://www.php.net/manual/en/reserved.variables.environment.php
更新
根据下面的链接,您的变量实际上可能在$_SERVER下面。不过,值得检查一下$_ENV。
根据http://www.php.net/manual/en/reserved.variables.environment.php#97105
发布于 2015-06-02 14:37:29
为了扩展wimvds上面的答案,您可以在Apache与SetEnvIf模块一起运行时更改环境变量。具体地说,所述模块的SetEnvIf指令。
例如:
SetEnvIf Request_URI "^.*\/foobar.*$" FOOBAR="something"如果regex与请求URI匹配(在本例中,任何包含单词“foobar”的URI ),上述示例将将$FOOBAR环境变量设置为“this”。您可以在主机的配置文件(通常在/etc/apache2/sites available/mywebsite.conf或其他类似文件中)中定义这一点。
https://stackoverflow.com/questions/2941136
复制相似问题