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