Domanda file_put_contents (meta / services.json): impossibile aprire lo stream: autorizzazione negata


Sono nuovo di Laravel. Stavo cercando di aprire http://localhost/test/public/ e ho ottenuto

Errore nel gestore delle eccezioni.

Ho cercato su google e ho cambiato il permesso della directory di archiviazione usando chmod -R 777 app/storage ma senza risultato.

Ho cambiato debug=>true in app.php e visitato la pagina e ottenuto l'errore nel gestore delle eccezioni:

Lo stream o il file "/var/www/html/test/app/storage/logs/laravel.log"   impossibile aprire: impossibile aprire lo stream: autorizzazione negata in   /var/www/html/test/bootstrap/compiled.php:8423

Poi ho cambiato i permessi della directory di archiviazione usando il comando chmod -R 644 app/storage e l'errore "Errore nel gestore eccezioni" era sparito e una pagina è stata caricata. Ma lì sto ricevendo questo:

file_put_contents (/var/www/html/laravel/app/storage/meta/services.json):   impossibile aprire lo stream: autorizzazione negata


138
2018-05-08 11:10


origine


risposte:


Suggerimento da vsmoraes ha funzionato per me:

Laravel> = 5.4

php artisan cache:clear 
chmod -R 777 storage/
composer dump-autoload

Laravel <5.4

php artisan cache:clear 
chmod -R 777 app/storage 
composer dump-autoload

293
2018-06-23 15:17



Per i googler che hanno affrontato questo problema con Laravel 5.

Si tratta di un problema di autorizzazione causato da diversi utenti che tentano di scrivere nello stesso file di registro all'interno di storage/logs cartella con permessi diversi.

Quello che succede è che la tua configurazione di laravel probabilmente è impostata per registrare gli errori ogni giorno e quindi il tuo server web (apache / nginx) potrebbe creare questo file sotto un utente predefinito a seconda del tuo ambiente può essere qualcosa come _www su OSX o www-data su * NIX sistemi, quindi il problema arriva quando potresti aver eseguito alcuni comandi artistici e ottenuto alcuni errori, così l'artigiano scriverà questo file ma con un utente diverso perché PHP sul terminale viene eseguito da un utente diverso in realtà il tuo utente di accesso, tu puoi verificarlo eseguendo questo comando:

php -i | grep USER

Se il tuo utente di login ha creato quel file di log sul tuo server web non sarai in grado di scrivere errori al suo interno e viceversa perché laravel scrive i file di log con 655 autorizzazioni di default che consente solo al proprietario di scrivere in esso.

Per risolvere questo problema temporaneo devi dare manualmente le autorizzazioni per il gruppo 664 a questo file in modo che sia l'utente di accesso che l'utente del webserver possano scrivere su quel file di registro.

Per evitare questo problema in modo permanente, potresti voler impostare le autorizzazioni appropriate quando viene creato un nuovo file all'interno di storage/logs dir ereditando le autorizzazioni dalla directory questa risposta https://unix.stackexchange.com/a/115632 può aiutarti ad affrontare con quello.


63
2018-03-27 03:07



Per tutti quelli che utilizzano Laravel 5, Homestead e Mac, prova questo:

mkdir storage/framework/views

40
2017-10-17 11:12



Non dovresti dare 777 permessi. È un rischio per la sicurezza. Per gli utenti di Ubuntu, in Laravel 5, ho il piacere di cambiare in modo ricorsivo il proprietario per lo storage di directory:

Prova il seguente:

sudo chown -R www-data:www-data storage

Nei sistemi basati su Ubuntu, www-data è un utente apache.


29
2017-11-22 16:18



alcune volte SELINUX ha causato questo problema; puoi disabilitare selinux con questo comando.

sudo setenforce 0

28
2018-03-19 05:26



Problema risolto

php artisan cache:clear
sudo chmod -R 777 vendor storage

questo abilita il permesso di scrittura per app, framework, log Spero che questo aiuti


18
2017-07-02 02:29



Per gli utenti vagabondi, la soluzione è:

(in vagabondo) php artisan cache: chiaro

(al di fuori di vagabondo) chmod -R 777 app / storage

(in vagabondo) compositore dump-autoload

Fare in modo che tu possa entrare nel tuo ambiente locale e non dentro il vagabondo è importante qui!


15
2018-04-30 23:45



Prova di nuovo con chmod -R 755 /var/www/html/test/app/storage. Utilizzare con sudo per Operation not permitted in chmod. Usa Verifica autorizzazione proprietario se continua ad avere l'errore.


10
2018-05-08 11:18