5

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

4

4 回答 4

6

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

可能的修复:

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

您还需要确保它/etc/profile.d/是由 Apache 启动init而不是您自己启动的。

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

于 2008-09-22T10:56:23.863 回答
0

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

注意:如果某些发行版试图尽可能多地隐藏系统配置,这不会让我感到惊讶,就系统配置而言,可以从公开访问的服务(例如 Apache)中隐藏。如果他们不这样做,他们可能会在未来的版本中开始这样做。因此,我建议您明确地执行此操作。如果您需要在 Apache 和您的 shell 之间共享这样的设置,您可以尝试从/etc/sysconfig/httpd获取/etc/profile.d/yourprofile.sh

于 2008-09-22T16:03:18.133 回答
0

Apache 配置文件允许您基于每个站点设置环境变量。

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

有关详细信息,请参阅Apache mod_env

于 2008-09-24T18:24:31.973 回答
0

如果您只需要 Apache 的环境变量,那么对我有用的是编辑/etc/apache2/envvars和重新启动 Apache。我添加了这些设置:

export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'
于 2014-10-08T07:33:12.547 回答