我只是希望我的apache注册我的一些预定义环境,以便我可以使用php中的getenv函数检索它。我怎样才能做到这一点?我尝试使用root并重新启动apache,使用export FOO = / bar / baz添加/etc/profile.d/foo.sh。
答案 0 :(得分:6)
环境变量由Unix中的进程继承。 /etc/profile.d中的文件仅在您登录时执行(在当前shell中,而不是在子shell中)。只需更改其中的值然后重新启动进程将不会更新环境。
可能的修复:
# . /etc/profile.d/foo.sh
,然后重新启动apache 当/etc/profile.d/
而不是您自己启动Apache时,您还需要确保init
来源。
最佳修复可能还取决于您使用的分发,因为它们使用不同的配置方案。
答案 1 :(得分:0)
您可以在配置文件中使用SetEnv(/etc/httpd/conf.d/*.conf,.htaccess ...)。此外,您应该能够在/ etc / sysconfig / httpd(在基于RPM的发布器上)和 export 中定义它们(注意:未经测试)。
注意:如果涉及系统配置,从一个公共可访问的服务(例如Apache)中尝试使用某些发行版很难隐藏,我不会感到惊讶。如果他们不这样做,他们可能会在未来的版本中开始这样做。因此,我建议你明确地这样做。如果您需要在Apache和shell之间共享这样的设置,可以尝试从 / etc / sysconfig / httpd <获取 /etc/profile.d/yourprofile.sh / p>
答案 2 :(得分:0)
Apache配置文件允许您基于每个站点设置环境变量。
因此,如果您的Web服务器正在为两个逻辑站点提供页面,您可以为每个站点设置不同的环境变量,从而让您的PHP做出不同的反应。
有关详细信息,请参阅Apache mod_env:
答案 3 :(得分:0)
如果您只需要Apache的env vars,对我来说有用的是编辑/etc/apache2/envvars
并重新启动Apache。我添加了这些设置:
export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'