2015-07-16 23 views
15

sto ottenendo il seguente errore da Laravel5 su di rendere qualsiasi pagina:laravel Cercando di memorizzare i file cache nella cartella principale

ErrorException in Filesystem.php line 74: 
file_put_contents(/fdcc73e2e72031a510ae8f921ce1d22d): failed to open stream: Permission denied 

la cache di configurazione è la seguente:

<?php 

return [ 

    /* 
    |-------------------------------------------------------------------------- 
    | Default Cache Store 
    |-------------------------------------------------------------------------- 
    | 
    | This option controls the default cache connection that gets used while 
    | using this caching library. This connection is used when another is 
    | not explicitly specified when executing a given caching function. 
    | 
    */ 

    'default' => env('CACHE_DRIVER', 'file'), 

    /* 
    |-------------------------------------------------------------------------- 
    | Cache Stores 
    |-------------------------------------------------------------------------- 
    | 
    | Here you may define all of the cache "stores" for your application as 
    | well as their drivers. You may even define multiple stores for the 
    | same cache driver to group types of items stored in your caches. 
    | 
    */ 

    'stores' => [ 

     'apc' => [ 
      'driver' => 'apc' 
     ], 

     'array' => [ 
      'driver' => 'array' 
     ], 

     'database' => [ 
      'driver' => 'database', 
      'table' => 'cache', 
      'connection' => null, 
     ], 

     'file' => [ 
      'driver' => 'file', 
      'path' => storage_path().'/framework/cache', 
     ], 

     'memcached' => [ 
      'driver' => 'memcached', 
      'servers' => [ 
       [ 
        'host' => '127.0.0.1', 'port' => 11211, 'weight' => 100 
       ], 
      ], 
     ], 

     'redis' => [ 
      'driver' => 'redis', 
      'connection' => 'default', 
     ], 

    ], 

    /* 
    |-------------------------------------------------------------------------- 
    | Cache Key Prefix 
    |-------------------------------------------------------------------------- 
    | 
    | When utilizing a RAM based store such as APC or Memcached, there might 
    | be other applications utilizing the same cache. So, we'll specify a 
    | value to get prefixed to all our keys so we can avoid collisions. 
    | 
    */ 

    'prefix' => 'laravel', 

]; 

È interessante notare che se io cambia l'impostazione predefinita in array o una qualsiasi delle altre opzioni tenta ancora di scrivere il file cache nella cartella root e fallisce ogni volta.

Qualcun altro ha riscontrato questo?

+0

Sto affrontando un problema simile, come lo hai risolto? – MZH

risposta

0

Dove stai caricando il CACHE_DRIVER?

La linea

'default' => env('CACHE_DRIVER', 'file'),

è alla ricerca sia per le variabili d'ambiente di sistema e per il file .env situato alla base del progetto. Dal lontano che descrivi, sto assumendo che stai solo cercando di cambiare il metodo di cache nel file di configurazione della cache. Il secondo parametro del metodo è un valore "predefinito" nel caso in cui laravel non trovi lo CACHE_DRIVER altrove.

Si dovrebbe controllare il file .env sulla radice del progetto per la variabile CACHE_DRIVER. Se è presente, il valore avrà priorità sulla configurazione allo cache.php.


Un'altra soluzione sarebbe quella di assicurarsi che laravel abbia il permesso di scrittura nella directory specificata. Verifica se la cartella ha il permesso di scrivere per l'utente o il gruppo www-data (almeno).

20

Verificare se esiste "memoria/quadro/viste". Se lo aggiungi e hai ancora problemi. Assicurati che sia scrivibile (775, 77, ecc ...)

Nel mio caso, l'errore si è verificato perché sono stato distribuito al mio server di produzione tramite github, ma il contenuto della memoria non è stato tracciato da git. Ho risolto questo problema assicurandomi che i file .gitignore in ognuna delle directory all'interno/storage fossero impegnati nel repository.

Note: Di solito questi nomi di file strani hanno qualcosa a che fare con i modelli di Blade. Non penso che stia effettivamente cercando di memorizzare il file cache in root.

Il mio errore è stato simile: "ErrorException in Filesystem.php linea 81: file_put_contents (/ f946048111f1176619e22f5127724e37): failed to open stream: Permesso negato"

+1

Questo ha funzionato anche per me. Non ho pubblicato tramite git, ma per qualche motivo le directory 'storage/framework /' non erano presenti. Creare e settare su 775 per me risolto: 'storage/framework/cache',' storage/framework/sessions' e 'storage/framework/views' – MetalFrog

+1

Ho avuto lo stesso errore ma la causa principale era perché git non memorizzava directory vuote. Così ho dovuto creare: '/ stoccaggio/logs', '/stoccaggio/quadro/cache', '/ stoccaggio/quadro/sessions', '/stoccaggio/quadro/views' e aggiungere. gitignore file a tutte quelle directory con questi contenuti: # ignora tutto tranne .gitignore * ! .gitignore – runamok

+1

Grazie signore. Ho passato un giorno a cercare di capirlo. La cosa strana è che se dovessi fare la cosa sbagliata di dare i permessi alla directory principale, funzionerebbe e memorizzerebbe nella directory principale! Perché non potevano semplicemente dirci che non c'era nessuna directory trovata in storage/framework/view ... –

8

Sto usando debian 7 ansimante.

Se hai trovato questo tipo di errori, procedere come segue

andare nella cartella app (es:/home/app/web)

  1. php artigianale di configurazione: la cache
  2. cache di artigiano
  3. php: chiaro
  4. php vista artigianale: chiaro
  5. chmod -R 777 stoccaggio/o chown -R webuser: stoccaggio webuser/
  6. chmod -R 777/o chown -R webuser pubblico: webuser pubblico/
  7. servizio apache2 reload, riavviare il servizio apache2

Nota: Webuser qui si riferisce a www-data o utente personalizzata

si prega di assicurarsi che il database è collegato con la pagina.

+0

su OSX (Almeno, da El Capitan) webuser è 'www'. –

Problemi correlati