apache - 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
请让我知道我可能需要分享的其他信息。感谢您的关注。
解决方案
这里有一些微妙的陷阱。
首先:您无法在运行该命令的终端中检查它。“SetEnv”设置每个请求的内部变量,该变量将被复制到服务器随后执行的类似 CGI 的进程中。
其次,即使您设置了一个真正的本地环境变量(例如 /etc/apache2/envvars),您也不应该执行restart
操作,因为这不一定会重新加载该特定文件。你应该做一个停止和开始。您仍然不会在启动服务器的命令中看到该变量,因为它仅在网络服务器进程中。
如果您想查看正在运行的进程的环境,您可以编写一个基本的 CGI 来转储传递给 CGI 脚本的环境。如果您是 PHP 用户,带有 phpinfo() 的基本脚本将转储它。
或者,您可以确定 Apache 的进程 ID,ps
然后检查 /proc/$thepid/env(在 Linux 上)。
推荐阅读
- python - 遍历列表和删除元素的最佳方法是什么?我目前的做法会导致元素被跳过
- scala - Spark,拥有大量内存,由于 OOM 无法加入数据帧
- python - TensorFlow 中分类 CNN 的近随机猜测准确度?
- laravel - 在查询生成器上评估两个字段的最简洁方法是什么
- swift - 如何计算 Swift 4 中非二叉树的所有节点?
- angular - 不能在角度 5 中使用 res.state
- firebase - 为 Firebase 受众创建“负面”事件
- javascript - 异步函数是 JavaScript 中函数的子集吗?
- react-native - 如何嵌套 createDrawerNavigator createStackNavigator createBottomTabNavigator
- python - Google Cloud Vision OCR 在浏览器演示和通过 python 之间的区别