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

Php 在linux中重新初始化系统范围的环境变量,php,linux,variables,environment,Php,Linux,Variables,Environment,我只想让我的apache注册一些预定义的环境,这样我就可以在php中使用getenv函数检索它。我该怎么做?我尝试使用root添加/etc/profile.d/foo.sh和export foo=/bar/baz,并重新启动了apache。环境变量由Unix中的进程继承。/etc/profile.d中的文件仅在您登录时执行(在当前shell中,而不是在子shell中)。仅在此处更改值,然后重新启动进程不会更新环境 可能的修复方法: 注销/登录,然后启动apache 源文件:#/etc/prof

我只想让我的apache注册一些预定义的环境,这样我就可以在php中使用getenv函数检索它。我该怎么做?我尝试使用root添加/etc/profile.d/foo.sh和export foo=/bar/baz,并重新启动了apache。

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

可能的修复方法:

  • 注销/登录,然后启动apache
  • 源文件:
    #/etc/profile.d/foo.sh
    ,然后重新启动apache
  • 在ApacheInit脚本中获取文件的源代码
您还需要确保当Apache是由
init
而不是您自己启动时,
/etc/profile.d/
是源代码

最佳修复方案可能还取决于您使用的发行版,因为它们使用不同的配置方案。

您可以在配置文件(/etc/httpd/conf.d/*.conf.htaccess…)中使用。此外,您应该能够在/etc/sysconfig/httpd(在基于RPM的发行版上)中定义它们并导出它们(注意:未测试)


注意:对于系统配置而言,如果一些发行版试图尽可能多地隐藏诸如Apache之类的公共可访问服务,我也不会感到惊讶。如果他们不这样做,他们可能会在未来的版本中开始这样做。因此,我建议你明确地这样做。如果您需要在Apache和shell之间共享这样的设置,您可以尝试从/etc/sysconfig/httpd中获取/etc/profile.d/yourprofile.sh。Apache配置文件允许您在每个站点上设置环境变量。

因此,如果您的web服务器提供来自两个逻辑站点的页面,您可以为每个站点设置不同的相同环境变量,从而使您的PHP做出不同的反应


有关详细信息,请参见:

如果您只需要Apache的env-vars,那么对我来说有效的方法是编辑
/etc/apache2/env-vars
并重新启动Apache。我添加了以下设置:

export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'

什么分布?这会影响最佳实践方式。好。请记住,apache的init脚本可能会在升级时更改。