我只想要我的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'
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top