【问题标题】:System commands dont work when running over passenger碾过乘客时系统命令不起作用
【发布时间】:2013-01-28 07:18:22
【问题描述】:

我有一个 sinatra 应用程序,其页面显示有关该应用程序的一些信息。其中一些是通过在页面加载时运行命令生成的。在我的 MacBook 上运行 unicorn 时一切正常,在生产服务器上运行 unicorn 时一切正常,但切换到 Apache/Passenger 突然命令开始返回 nil。

例如,要获取我使用的提交者列表:

comitters = `cd /path/to/app && git shortlog -s -n`

在 apache/passenger 设置中运行之前,它可以完美运行。

乘客中是否有一些选项可以禁用系统命令?

【问题讨论】:

  • +1 -- “碾过乘客”哈哈

标签: passenger


【解决方案1】:

问题在于您的 $PATH 环境变量,系统使用它来查找命令。你从外壳运行独角兽,不是吗?所以 Unicorn 从你的 shell 继承 $PATH 。但是从 Phusion Passenger 启动的应用程序进程是从 Apache/Nginx 启动的,而这些进程通常又是从一些系统 init 服务启动的,这些服务的环境变量与您的 shell 完全不同。阅读http://blog.phusion.nl/2008/12/16/passing-environment-variables-to-ruby-from-phusion-passenger/ 以获得解决方案。

【讨论】:

  • 谢谢!我知道这会很简单
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-22
  • 2015-10-15
  • 2021-12-22
  • 1970-01-01
  • 2020-07-08
  • 2019-06-04
  • 1970-01-01
相关资源
最近更新 更多