2013-01-15 35 views
3

我有一个sinatra应用程序,其页面显示有关应用程序的一些信息。其中一些是通过页面加载运行命令生成的。在独角兽中运行时,一切正常,在我的MacBook上运行正常,并且在独角兽中运行时,生产服务器上的一切正常工作,但交换到Apache/Passenger,突然间命令开始返回nil。系统命令不能在乘客上运行

例如获得的提交的名单我使用:

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

这工作完全直到阿帕奇/乘客安装运行。

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

+2

+1 - “跑过客”大声笑 – boruch

回答

1

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

+0

谢谢!我知道这会很简单 – Arcath

相关问题