Laravel 5 Zugriff verweigert beim schreiben in die log-Datei
Ich habe Ubuntu und Laravel 5 Rahmen und ich sehe den weißen Bildschirm im browser.
Wenn ich storage/logs
directory-Berechtigungen es hilft, aber ich habe, es zu tun jeden Tag, durch die daily-log-Konfiguration.
InformationsquelleAutor ademin | 2015-05-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Berechtigungen für die
storage
undvendor
Ordner sollte an775
aus offensichtlichen Gründen der Sicherheit.Jedoch sowohl auf Ihrem computer und Ihrem server Apache brauchen, um in der Lage zu schreiben in diesen Ordner. Ex: wenn Sie Befehle ausführen, wie
php artisan
benötigt Ihr computer zu schreiben, in der logs Datei instorage
.Alles, was Sie tun müssen, ist, um Besitz von dem Ordner zu Apache :
Dann müssen Sie Ihren computer (verwiesen wird, indem es
username
) zu der Gruppe, zu dem der server der Apache gehört. Etwa so :Häufig
groupName
istwww-data
aber möchten Sie vielleicht, um es zu ersetzen mit Ihrem richtigen Gruppe.Du hast Recht. Ich lösche meine Antwort. Sie sollten jedoch prüfen, indem der Benutzer die www-data Gruppe und halten, 775, anstatt 777 für alle Ordner. Wir brauchen eine Lösung, die funktioniert für die Produktion zu.
InformationsquelleAutor BassMHL
chmod 775 für den Ordner storage ist in Ordnung in Anbetracht Benutzer
gehört der web-server-Gruppe.
mit -R seine äußerst riskant, da für Dateien eine execute-Berechtigungen ist überhaupt nicht erforderlich.
chmod 664 für Dateien im Speicher. chmod 775 für Ordner in
InformationsquelleAutor Yogesh Kamat
Kurze Antwort:
sudo chmod -R 777 vendor storage
echo "umask 000" | sudo tee -a /etc/resolv.conf
sudo service apache2 restart
Umfangreiche Antwort:
Beim Start von Laravel 5 framework unter Apache-server mit den standardmäßig aktiviert, die "täglich" - option zum erstellen von log-Dateien, manchmal würden Sie das Gesicht mit Verbot des Schreibens in den logfiles durch die Datei-Berechtigungen.
Meistens, wenn Sie php-Projekt alle Dateien gehören
www-data
Benutzer, und der aktuelle Benutzer hat keine Notwendigkeit zu schreiben, um die logfiles.In Bezug auf die Laravel, zwei unterschiedliche Prozesse benötigen, schreiben Sie Ihre Logdateien:
1) Apache-server (Benutzer
www-data
), wenn Sie etwas in Ihrer browser-Software verhindern;2) Php-Prozess (Ihre user) beim ausführen
php artisan something
in die Befehlszeile ein.Natürlich kann man sudo -u www-data php artisan your_command (wie vorgeschlagen hier ) jedes mal, wenn Sie verwenden möchten, artisan, aber es ist ein bisschen ärgerlich.
Zunächst müssen Sie die Berechtigungen der Hersteller-und storage-Verzeichnisse für den Apache-Benutzer.
Einfachste (aber nicht beste) ist zu führen:
sudo chmod -R 777 vendor storage
Nun, mal sehen, was passiert, wenn logfile erzeugt in beiden Fällen.
Wenn zunächst logfile
storage/logs/laravel-2015-mm-dd.log
entstand durch die Fehler ausgelöst durchphp artisan something
Befehl (Fall 2), log-DateiBerechtigungen.
Wenn es erstellt wurde, indem Sie Ihrer apache-server (Fall 1), die ussually starten unter
www-data
Benutzer, Berechtigungen sehen wie folgt aus:So, mein Vorschlag ist, ändern permissins für neu erstellte Dateien von apache.
Lassen Sie Zeile hinzufügen
umask 000
zu/etc/resolv.conf
Datei.Nun,
Das ist es.
Seien Sie sich bewusst, diese Lösung ist anwendbar für Entwicklungsumgebung nur, aufgrund der möglichen secutity risk.
Was ist zu tun, in der Produktion Umwelt? Zum Beispiel, auf DigitalOcean? Was ist zu tun für Nginx? Zum Beispiel, auf DigitalOcean LEMP?
Das ist schrecklich Beratung. Folgen Sie NICHT diesem. First off, /etc/resolv.conf hat nichts zu tun mit der Datei Berechtigungen. Wenn Sie verrückt sind, können Sie legen Sie die Standard-umask in /etc/login.defs für eine gemeinsame Linux-system mit pam_umask. Ein weiteres gemeinsames Ort, um es zu setzen ist /etc/profile, oder auch /etc/rc.local. Doch sollten Sie sich nicht tun. Sicherheit ist wichtig, auch auf einem dev-system.
Sie nie sollten nicht alles gelesen/schreibbar für web-server-Benutzer...
Einige der Plakate sind unhöflich zu Ihnen. Sie brachte ein-Schlüssel-Konzept nicht gedacht, der von den anderen Postern in diesem Handwerker-und web-Datenverkehr kann bezogen werden von verschiedenen Benutzern. Dies verursacht große Probleme in meinem Fall. Mein scheduler lief artistan alle fünf Minuten...aber als root. Also meine log-Datei würde es drehen, um die Stamm -, dann, wenn eine web-Anfrage versucht zum schreiben in die log-es stürzte das system. Ich behoben, indem sichergestellt wird mein Befehl crontab für artistan-scheduler ausgeführt wurde, wie der web-Benutzer...nicht als root. Danke!!!
InformationsquelleAutor ademin