www-data ユーザーは Ruby gem を使用できません

www-data ユーザーは Ruby gem を使用できません

VagrantとVirtualBoxを使って仮想サーバーを稼動させようとしています。私が使用しているVirtualBoxには、scotch/boxいくつかのコンポーネント(Apache、MySQL、PHPなど)を備えたUbuntuサーバーを稼動させるための基本的なものがすべて揃っています。Scotchboxの詳細については、ここ

これでサーバーが起動して実行されました (Yii2 アプリケーションを実行)。しかし、アプリケーションが起動するとすぐに Yii エラー メッセージが表示されsh: 1: sass: not found、SASS ファイルを CSS に変換できませんでした。そこで、サーバーに戻って sass がインストールされているか確認しましたが、インストールされていなかったので、コマンドを実行したgem install sassところ、sass がインストールされました。truegem list sass -iが返されました。

しかし、それでも問題は解決せず、sass が見つかりませんでした。コンソールに戻ると、もちろん apache は www-data ユーザーによって実行されており、vagrant ユーザーで ssh にログインしました。そして、ここからが私にとって少し曖昧になります。apache サービスの環境変数に、ruby と gem の両方へのパスを追加しました。しかし、www-data ユーザーは、sass コマンドも gem コマンドも、ruby コマンドさえも見つけることができません。

また、Apache サービスの所有者を www-data から vagrant ユーザーに変更しようとしましたが、それは多少は役立ちましたが、私が受け入れたい解決策ではありません。Apache サービスの所有者が vagrant のようなルート ユーザーではなく、www-data ユーザーのままになる解決策が必要です。

さらにデータを追加する必要がある場合はお知らせください。

答え1

Yii アプリケーションをどのように起動していますか? コマンドラインから起動しているようです。起動に使用しているユーザーが、パスに sass アプリケーションを表示していない場合は、いくつかの選択肢があります。

  • ユーザーのPATHを更新して、/usr/local/bin(またはsassが配置されている場所。これは以下を実行して確認できます)を含めます。which sass
  • /usr/local/bin/sass から、ユーザーが正常に検索するディレクトリへのシンボリックリンクを作成します (/bin のようなものが機能する可能性があります)

このエラーが発生したときに実行していたコマンドを貼り付けていただけますか? which sassYii の失敗後に実行すると、スクリプトの場所の結果が表示されますか? これを手動で実行しようとしているのか、それとも Apache 経由でページにアクセスしているのか (その時点で、www-data ユーザーが関係してきます) 確認できますか。

関連情報