在Linux中重新初始化系统范围的环境变量
时间:2020-03-06 14:32:02 来源:igfitidea点击:
我只希望我的Apache注册一些预定义的环境,以便可以使用php中的getenv函数检索它。我怎样才能做到这一点?我尝试使用root使用出口FOO = / bar / baz添加/etc/profile.d/foo.sh并重新启动apache。
解决方案
环境变量由Unix中的进程继承。登录时,仅执行/etc/profile.d中的文件(在当前外壳中,而不在子外壳中)。仅在此处更改值,然后重新启动进程不会更新环境。
可能的修复:
- 注销/登录,然后启动apache
- 源文件:#。 / etc / profile.d / foo.sh`,然后重新启动apache
- 在apache初始化脚本中获取文件
我们还需要确保在init
启动Apache而不是我们自己时启动/ etc / profile.d /
。
最佳解决方案可能还取决于我们使用的发行版,因为他们使用不同的方案进行配置。
我们可以在配置文件(/etc/httpd/conf.d/*.conf,.htaccess ...)中使用SetEnv。另外,我们应该能够在/ etc / sysconfig / httpd中定义它们(基于RPM的发行版)并导出它们(注意:未测试)。
注意:如果某些发行版竭尽所能地从诸如Apache之类的公共可访问服务中隐藏尽可能多的系统配置,这也不会令我感到惊讶。如果没有,他们可能会在将来的版本中开始这样做。因此,我建议我们明确地执行此操作。如果需要在Apache和Shell之间共享这样的设置,则可以尝试从/ etc / sysconfig / httpd采购/etc/profile.d/yourprofile.sh。
Apache配置文件允许我们基于每个站点设置环境变量。
因此,如果Web服务器正在从两个逻辑站点提供页面,则可以为每个站点设置相同的环境变量,从而使PHP做出不同的反应。
有关详细信息,请参见Apache mod_env: