2013-01-15 60 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

相關問題