在linux中重新初始化系统范围的环境变量

时间:2008-09-22 10:47:42

标签: php linux variables environment

我只是希望我的apache注册我的一些预定义环境,以便我可以使用php中的getenv函数检索它。我怎样才能做到这一点?我尝试使用root并重新启动apache,使用export FOO = / bar / baz添加/etc/profile.d/foo.sh。

4 个答案:

答案 0 :(得分:6)

环境变量由Unix中的进程继承。 /etc/profile.d中的文件仅在您登录时执行(在当前shell中,而不是在子shell中)。只需更改其中的值然后重新启动进程将不会更新环境。

可能的修复:

  • 注销/登录,然后启动apache
  • 获取文件:# . /etc/profile.d/foo.sh,然后重新启动apache
  • 在apache init脚本中提供文件

/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'