www-data 用户无法使用 ruby​​ gems

www-data 用户无法使用 ruby​​ gems

我正在尝试使用 Vagrant 和 VirtualBox 运行虚拟服务器。对于我使用的 VirtualBox,scotch/box它具有运行 ubuntu 服务器所需的所有基本内容以及一些组件(apache、mysql、php 等)。有关 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 可能会有效)

您能否提供遇到此错误时正在运行的命令的粘贴?如果您which sass在 Yii 失败后运行,您是否会看到脚本位置的结果?您能否确认您正在尝试手动运行它,或者您是否正在通过 apache 访问页面(此时,www-data 用户将发挥作用)。

相关内容