it-swarm.com.de

Laravel 4: Fehler beim Öffnen des Streams: Berechtigung verweigert

Ich habe Probleme beim Einrichten von Laravel 4. Beim Öffnen der Indexseite tritt dieser Fehler auf:

file_put_contents (/Users/laravel/app/storage/meta/services.json) [Funktion.file-put-contents]
stream konnte nicht geöffnet werden: Berechtigung verweigert.

Was fehlt mir hier?

34
Bryan P

Das Verzeichnis storage muss vom Webserver-Benutzer beschreibbar sein.

45
Franz

Ich denke, dass chmod -777 eine schlechte Praxis ist.

Um das Problem mit Berechtigungen auf Laravel zu lösen, habe ich Folgendes getan (mit root-Benutzer):

cd app/

chown -R www-data:www-data storage

cd storage/

find . -type d -exec chmod 775 {} \; && find . -type f -exec chmod 664 {} \;

Und immer im App/Storage-Verzeichnis:

chown your_user:user_group .gitignore cache/.gitignore logs/.gitignore meta/.gitignore sessions/.gitignore views/.gitignore

Beenden Sie jetzt den root-Benutzer und es ist in Ordnung.

EDIT: das war für Laravel4. Dies funktioniert bei Laravel5 aufgrund einer anderen Struktur nicht.

52
François

Es ist besser, dass Sie die Berechtigungen nicht ändern. Sie sollten lediglich den owner:group des Speicherordners mit chown in den des owner:group von Apache ändern. Dies ist zwar komplizierter, aber sicherer und Sie werden sich bald daran gewöhnen kann dies in der httpd.conf finden

MAMP:

/Applications/MAMP/conf/Apache/httpd.conf

XAMMP:

/Applications/XAMPP/xamppfiles/etc/httpd.conf

Öffnen Sie die httpd.conf mit Ihrem bevorzugten Editor und suchen Sie nach User/Group. Nach der Suche sehen Sie diese Zeilen unter der markierten Zeile, die Sie gesucht haben:

User someuser
Group somegroup

Wenn Sie den Benutzer und die Gruppe bereits kennen, cd in Ihr Laravel-Verzeichnis kopieren, führen Sie die chown aus:

chown -R someuser:somegroup app/storage

P.S: Wenn Sie beim Ausführen von chown eine Fehlermeldung erhalten, versuchen Sie Folgendes:

Sudo chown -R someuser:somegroup app/storage

Es wird dann nach Ihrem Passwort gefragt, so dass Sie es dann eingeben.

14
user2861062

Dieses Problem ist auf Centos 7 gerade aufgetreten. Der Blocker hatte keine Ordnerberechtigungen, sondern blockierte nginx/php durch den Zugriff von selinux auf/var/www. Wenn das Obige nicht funktioniert, deaktivieren Sie selinux als Test, um festzustellen, ob Sie den Composer ohne Berechtigungsprobleme erneut ausführen können.

5
user3670777

In meinem Fall wurde dieser Fehler ausgelöst:

fopen (php: // stdout): Stream konnte nicht geöffnet werden: Operation fehlgeschlagen

ich verwende einen virtuellen Host in Wamp . Deshalb fügte ich diese Zeile zu meinem <VirtualHost> -> <Directory> Block in der httpd-vhosts.conf Datei hinzu:

Require all granted

und mein Block ist:

<VirtualHost *:80>
    ServerName laravel
    DocumentRoot d:/wamp/www
    <Directory  "d:/wamp/www/">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

dann Problem gelöst!

0
ivahidmontazer

Wenn Sie Apache unter Ubuntu verwenden, müssen die Speicher- und Bootstrap-/Cache-Ordner für Webserver-Benutzer schreibbar sein.

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

Dadurch erhalten Webserver-Benutzer Schreibberechtigungen für diese Ordner.

0
Ajnas Kt