2016-05-09 16 views
1

Ich habe ein Problem mit meiner Ubuntu 14.04 und meiner Laravel 5.1 App.'Fehler beim Öffnen des Streams: Berechtigung verweigert' Fehler - Laravel 5.1

Ich erhalte diese Störung, wenn mein app anmelden will:

Uncaught UnexpectedValueException: Der Strom oder Dateispeicherung/logs/l konnte nicht geöffnet werden: failed to open stream: Permission in/var verweigert /www/releases/20160426/booking_server/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:87\nStack verfolgen: \ n # 0 ........ es

weiter Ich habe diese Lösung gefunden:

sudo php artisan cache:clear 

sudo chmod -R 777 storage 

sudo composer dump-autoload 

Aber das Problem ist, dass es nur vorübergehend ist. Das Problem kommt jeden Tag zurück und ich muss immer dasselbe machen.

Was kann ich tun, um dies jeden Tag zu stoppen?

PD: Ich habe ein tägliches Protokoll, aber wenn es möglich ist, möchte ich es auf diese Weise behalten.

+0

Wie erstellen Sie das tägliche Protokoll? Es hört sich so an, als ob der Cron-Job o.ä. als root läuft? –

+0

Wirklich ich weiß nicht alles von Laravel getan. Ich lege einfach app.php 'log' => 'täglich' –

+0

Wem gehört das Laravel-Verzeichnis? Wurzel? Sie sollten es der Webserver-Gruppe zuweisen und Ihren Benutzer zu dieser Gruppe hinzufügen – James

Antwort

1

Es sieht so aus, als hätten sie hier zuvor eine similar issue angegangen. Verfügen Sie über handwerkliche Befehle, die Sie manuell ausführen oder über cron ausführen? Wenn dies der Fall ist, wird es wahrscheinlich hilfreich sein, das Problem so zu beheben, dass es als Ihr Webbenutzer ausgeführt wird.

Wenn nicht, ich glaube wirklich, die leicht anwendbare Lösung für Sie dieses Set aus this one ist:

sudo setfacl -R -m u:www-data:7 /full/path/to/storage 

Wenn der Befehl nicht funktioniert ich eine mögliche alternative Form ausgegraben:

setfacl -d -m g:www-data:rw /full/path/to/laravel/storage/logs 

setfacl ist nicht so populär wie es sein sollte, es ist wirklich eine der besten Möglichkeiten, Berechtigungen für einen Webserver einzurichten.

3

Es wird nicht empfohlen, ein Verzeichnis auf dem Server zu schreiben (chmod 777). Legen Sie die Berechtigungen wie dem so ist, (den Webserver unter der Annahme wird unter der Gruppe www-data läuft)

sudo chgrp -R www-data storage bootstrap/cache 
sudo chmod -R ug+rwx storage bootstrap/cache 

Siehe dazu: https://laracasts.com/discuss/channels/general-discussion/laravel-framework-file-permission-security

In Bezug auf Ihr Problem: Es scheint, wie es ein Prozess läuft ist, dass das schafft Protokolldatei täglich mit Root-Rechten. Sind Sie sicher, dass es kein Cron-Setup für dasselbe gibt?

Wenn nicht, führen Sie ls -l im Verzeichnis storage/logs aus und fügen Sie die Ausgabe hier ein. (Tun Sie dies, bevor Sie die Berechtigungen manuell ändern)

Verwandte Themen