SetEnv 不更新我的环境变量(菜鸟警告)



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

我已经阅读了 https://httpd.apache.org/docs/2.4/mod/mod_env.html#setenv 并做了一些谷歌和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

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

这里有一些微妙的陷阱。

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

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

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

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

相关内容

最新更新