WWW-Data-Benutzer können keine Ruby-Gems verwenden

WWW-Data-Benutzer können keine Ruby-Gems verwenden

Ich versuche, einen virtuellen Server mit Vagrant und VirtualBox zum Laufen zu bringen. Für die von mir verwendete VirtualBox, scotch/boxdie alle grundlegenden Dinge zum Ausführen eines Ubuntu-Servers mit einigen Komponenten (Apache, MySQL, PHP usw.) enthält, finden Sie weitere Informationen zu ScotchboxHier.

Jetzt habe ich den Server zum Laufen gebracht (eine Yii2-Anwendung läuft), aber sobald die Anwendung startet, erhalte ich eine Yii-Fehlermeldung sh: 1: sass: not foundund aus diesem Grund konnte eine SASS-Datei nicht in CSS konvertiert werden. Also ging ich zurück zu meinem Server, um zu prüfen, ob Sass installiert war. Es war nicht so, also führte ich den Befehl aus gem install sassund danach war Sass installiert. gem list sass -igab true zurück.

Aber das Problem blieb bestehen, Sass konnte nicht gefunden werden. Ich ging zurück zu meiner Konsole und natürlich wird Apache vom Benutzer www-data ausgeführt und ich habe mich mit dem Vagrant-Benutzer bei SSH angemeldet. Und hier wird es für mich etwas unklar. In den Umgebungsvariablen des Apache-Dienstes habe ich die Pfade sowohl zu Ruby als auch zu den Gems hinzugefügt. Aber der Benutzer www-data kann den Sass-Befehl oder den Gem-Befehl oder sogar den Ruby-Befehl immer noch nicht finden.

Ich habe auch versucht, den Besitzer des Apache-Dienstes von www-data auf den Vagrant-Benutzer zu ändern, was zwar irgendwie geholfen hat, aber das ist nicht die Lösung, die ich akzeptieren möchte. Ich möchte eine Lösung, bei der der Apache-Dienst weiterhin dem Benutzer www-data gehört und nicht einem Root-Benutzer wie Vagrant.

Wenn weitere Daten hinzugefügt werden müssen, lassen Sie es mich bitte wissen.

Antwort1

Wie starten Sie Ihre Yii-Anwendung? Es klingt, als würden Sie sie über die Befehlszeile starten. Welcher Benutzer Sie auch immer zum Starten verwenden, er sieht die Sass-Anwendung nicht in seinen Pfaden. Sie haben mehrere Möglichkeiten.

  • Aktualisieren Sie den Benutzerpfad, um /usr/local/bin (oder den Speicherort von Sass, den Sie ermitteln können, indem Sie ausführen) einzuschließen.which sass
  • Erstellen Sie einen symbolischen Link von /usr/local/bin/sass zu einem Verzeichnis, in dem Ihr Benutzer erfolgreich sucht (etwas wie /bin könnte funktionieren).

Könnten Sie eine Kopie des Befehls bereitstellen, den Sie ausführen, wenn dieser Fehler auftritt? Wenn Sie which sassnach dem Yii-Fehler ausführen, sehen Sie Ergebnisse für den Speicherort des Skripts? Können Sie bestätigen, dass Sie versuchen, dies manuell auszuführen, oder ob Sie über Apache auf eine Seite zugreifen (an diesem Punkt würde der WWW-Datenbenutzer ins Spiel kommen).

verwandte Informationen