首页 > 解决方案 > SetEnv 没有更新我的环境变量(菜鸟警告)

问题描述

我仍然是一个 Apache 菜鸟,我正在尝试设置一个将由我的 Rails 应用程序使用的环境变量。

我已阅读https://httpd.apache.org/docs/2.4/mod/mod_env.html#setenv并进行了一些 google 和 SO 搜索。我至少已经确定要分配的值必须用引号引起来。但是,当我运行时sudo service apache2 restart, SECRET_KEY_BASE 的值仍然不正确(通过查看printenv)。我不知道我不知道什么。我缺少一些步骤吗?

在我的 apache 配置中,我有:

SetEnv SECRET_KEY_BASE "e10e721..."

# Tell Apache and Passenger where your app's 'public' directory is
DocumentRoot /var/www/some_path

请让我知道我可能需要分享的其他信息。感谢您的关注。

标签: apache

解决方案


这里有一些微妙的陷阱。

首先:您无法在运行该命令的终端中检查它。“SetEnv”设置每个请求的内部变量,该变量将被复制到服务器随后执行的类似 CGI 的进程中。

其次,即使您设置了一个真正的本地环境变量(例如 /etc/apache2/envvars),您也不应该执行restart操作,因为这不一定会重新加载该特定文件。你应该做一个停止和开始。您仍然不会在启动服务器的命令中看到该变量,因为它仅在网络服务器进程中。

如果您想查看正在运行的进程的环境,您可以编写一个基本的 CGI 来转储传递给 CGI 脚本的环境。如果您是 PHP 用户,带有 phpinfo() 的基本脚本将转储它。

或者,您可以确定 Apache 的进程 ID,ps然后检查 /proc/$thepid/env(在 Linux 上)。


推荐阅读