首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP和Apache环境变量

PHP和Apache环境变量
EN

Stack Overflow用户
提问于 2010-05-31 02:46:36
回答 3查看 15.8K关注 0票数 9

我想在启动时将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专家,所以请原谅我缺乏知识。

EN

回答 3

Stack Overflow用户

发布于 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的相关信息

票数 12
EN

Stack Overflow用户

发布于 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

票数 3
EN

Stack Overflow用户

发布于 2015-06-02 14:37:29

为了扩展wimvds上面的答案,您可以在Apache与SetEnvIf模块一起运行时更改环境变量。具体地说,所述模块的SetEnvIf指令。

例如:

代码语言:javascript
运行
复制
SetEnvIf Request_URI "^.*\/foobar.*$" FOOBAR="something"

如果regex与请求URI匹配(在本例中,任何包含单词“foobar”的URI ),上述示例将将$FOOBAR环境变量设置为“this”。您可以在主机的配置文件(通常在/etc/apache2/sites available/mywebsite.conf或其他类似文件中)中定义这一点。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2941136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档