3

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

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

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

在 apache/passenger 设置中运行之前,这非常有效。

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

4

1 回答 1

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/以获得解决方案。

于 2013-01-27T23:18:22.567 回答