www-data 使用者無法使用 ruby​​ gems

www-data 使用者無法使用 ruby​​ gems

我正在嘗試使用 Vagrant 和 VirtualBox 運行虛擬伺服器。對於我正在使用的 VirtualBox scotch/box,它提供了運行帶有一些組件(apache、mysql、php 等)的 ubuntu 伺服器的所有基本內容,可以找到有關 scotchbox 的更多信息這裡

現在我啟動並運行了伺服器(運行 Yii2 應用程式),但應用程式啟動後我收到一條 Yii 錯誤訊息sh: 1: sass: not found,因此 SASS 檔案無法轉換為 CSS。所以我回到我的伺服器檢查是否安裝了 sass,但沒有安裝,所以我運行了命令gem install sass,然後安裝了 sass。gem list sass -i傳回 true。

但問題依然存在,找不到 sass。我回到我的控制台,當然 apache 是由使用者 www-data 運行的,我用 vagrant 使用者登入 ssh。這對我來說有點模糊。在 apache 服務的環境變數中,我新增了 ruby​​ 和 gems 的路徑。但 www-data 使用者仍然找不到 sass 指令或 gem 指令甚至 ruby​​ 指令。

我還嘗試將 apache 服務的所有者從 www-data 更改為 vagrant 用戶,但這確實有一點幫助,但這不是我想要接受的解決方案。我想要一個解決方案,apache 服務仍然由 www-data 使用者擁有,而不是像 vagrant 這樣的 root 使用者。

如果需要添加更多數據,請告訴我。

答案1

您如何啟動您的 Yii 應用程式?聽起來您是透過命令列啟動它的。無論您使用哪個用戶來啟動,都不會在其路徑中看到 sass 應用程式。你有幾個選擇。

  • 更新使用者 PATH 以包含 /usr/local/bin (或 sass 所在的任何位置,您可以透過執行來確定)which sass
  • 建立從 /usr/local/bin/sass 到使用者成功搜尋的目錄的符號連結(例如 /bin 可能有效)

您能否提供遇到此錯誤時正在運行的命令的貼上?如果您在 Yii 失敗後運行which sass,您是否會看到腳本位置的結果?您能否確認您正在嘗試手動運行它,或者您是否透過 apache 存取頁面(此時,www-data 使用者將發揮作用)。

相關內容