webentwicklung-frage-antwort-db.com.de

Laravel 5: laravel.log konnte nicht geöffnet werden: Genehmigung verweigert

Um Sie von Anfang an zu stoppen, gibt es KEINE Berechtigungsprobleme./storage ist rekursiv chmodded 777 und der gesamte Projektordner wird von Apache: apache angezeigt

Ich habe sogar die Log-Datei in ...- old umbenannt und Apache hat eine neue erstellt ... wenn sie keine Schreibrechte hatte, hätte sie sie nicht erstellen können.

Läuft unter CentOS Release 6.6 (Final)

Das Projekt von git eingesetzt, arbeitet das Homestead für meinen Kollegen.

Voller Fehler:

[Mon May 18 10:17:58 2015] [error] [client 86.124.208.14] PHP Fatal Fehler: Nicht erfasste Ausnahme 'UnexpectedValueException' mit Nachricht 'Der Stream oder die Datei "/var/www/vhosts/mapper.pavementlayers.com/storage/logs/laravel-2015-05-18.log" konnte nicht geöffnet werden: Fehler beim Öffnen des Streams: Berechtigung verweigert 'in /var/www/vhosts/mapper.pavementlayers.com/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:84\nStack trace:\n # 0 /var/www/vhosts/mapper.pavementlayers.com/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php(88): Monolog\Handler\StreamHandler-> write (Array)\n # 1 /var/www/vhosts/mapper.pavementlayers.com/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(37): Monolog\Handler\RotatingFileHandler-> write (Array)\n # 2 /var/www/vhosts/mapper.pavementlayers.com/vendor/monolog/monolog/src/Monolog/Logger.php(265): Monolog\Handler\AbstractProcessingHandler-> Handle (Array)\n # 3 /var/www/vhosts/mapper.pavementlayers.com/vendor/monolog/monolog/src/Monolog/Logger.php(543): Monolog\Logger-> addRecord (400, 'Ausnahme' Symf ... ', Array)\n # 4 /var/www/vhosts/mapper.pavementl in /var/www/vhosts/mapper.pavementlayers.com/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php in Zeile 84

13
ied3vil

Es kann sein, dass SElinux Apache daran hindert, diese Datei zu erstellen.

Um dies zu testen, können Sie SElinux mit dem folgenden Befehl vorübergehend deaktivieren:

setenforce 0

Dadurch wird SElinux in den zulässigen Modus versetzt. Das bedeutet, dass Sie immer noch eine Fehlermeldung in Ihrer SElinux-Protokolldatei erhalten, aber SElinux den Befehl nicht blockiert.

Um SElinux wieder zu aktivieren, können Sie Folgendes eingeben:

setenforce 1

Oder starten Sie Ihren CentOS-Server neu.

Leider hatte ich auch Probleme mit Laravel 5 auf CentOS und die Ursache war SElinux .. Ich endete damit, SElinux nicht zu benennen, und ich weiß, dass es nicht das Richtige ist, aber ich hatte keine Zeit, das zu bekommen zwei arbeiten noch zusammen!


Aktualisieren

Also musste ich endlich etwas weiter untersuchen und habe SELinux mit Laravel 5 zusammenarbeiten lassen. Ich aktualisiere diesen Post für Leute, die auf dieses Problem stoßen könnten, weil das Deaktivieren von SELinux nicht die beste Strategie ist, wie oben erwähnt.

Drei Dinge müssen getan werden:

  1. Die Ordner Storage und Bootstrap/Cache müssen den richtigen SELinux-Kontext haben. Dies kann mit den folgenden Befehlen erreicht werden.

    semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/<Laravel Site>/storage(/.*)?"
    
    semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/<Laravel Site>/bootstrap/cache(/.*)?"
    
  2. Der SELinux-Kontext muss auf die Verzeichnisse angewendet werden.

    restorecon -Rv "/var/www/<Laravel Site>/storage"
    
    restorecon -Rv "/var/www/<Laravel Site>/bootstrap/cache"
    
  3. Der Apache-Benutzer muss über die Rechte zum Erstellen von Dateien in beiden Verzeichnissen verfügen. Dies kann über eine ACL in CentOS 7 erreicht werden.

    setfacl -R -m u:Apache:rwX storage/
    
    setfacl -R -m u:Apache:rwX bootstrap/cache/
    

Als letztes müssen Sie SELinux erneut aktivieren.

39
Thomas Snijder

Versuchen Sie diese Befehle für laravel 5

$ php artisan cache:clear 

$ Sudo chmod -R 777 app/storage 

$ composer.phar dump-autoload

Dies ist darauf zurückzuführen, dass laravel zumindest für meinen Fall nicht die Berechtigung zum Schreiben in die Protokolldatei hat.

8
Mustafa Dwekat

Das hat für mich funktioniert, Laravel 5.4 und höher

$ Sudo chmod -R 755 storage/

$ Sudo chown -R www-data storage/

$ Sudo chgrp -R www-data storage/

$ php artisan cache:clear

$ php artisan config:cache

$ composer dumpautoload

Nicht alle Schritte notwendig.

2
ReesBo

Sie müssen sicherstellen, dass der Ordner storage vorhanden ist. Wenn Sie von git aus bereitstellen, stellen Sie sicher, dass der Ordner storage selbst verfolgt und automatisch erstellt wird.

0
lowerends

für Centos 7 

   # ausearch -c 'httpd' --raw | audit2allow -M my-httpd
   # semodule -i my-httpd.pp
0
Leemarshn

ON Laravel 5.7

$ cd /var/www/html/$ PHP-Cache: clear Anwendungs-Cache gelöscht!

0
Lasimin