Proporcione una ruta de caché válida

152

Dupliqué una aplicación laravel que funcionaba y la renombré para usarla en otra aplicación. Eliminé la carpeta del proveedor y ejecuté los siguientes comandos nuevamente:

composer self-update

composer-update

npm install

bower install

Configuré mis rutas y todo correctamente, sin embargo, ahora cuando trato de ejecutar mi aplicación en mi navegador obtengo los siguientes errores:

InvalidArgumentException en Compiler.php línea 36: proporcione una ruta de caché válida.

ErrorException en Filesystem.php línea 111: file_put_contents (F: \ www \ example \ app \ storage \ framework / sessions / edf262ee7a2084a923bb967b938f54cb19f6b37d): no se pudo abrir la secuencia: No existe tal archivo o directorio

Nunca he tenido este problema antes, no sé qué lo está causando ni sé cómo solucionarlo, busqué en línea una solución, pero hasta ahora no he encontrado ninguna.

usuario3718908
fuente
Debe reconstruir las carpetas de almacenamiento, están en su archivo .gitignore, por lo que no se copiarán cuando clone un proyecto (ya que nunca se
envían

Respuestas:

489

Intenta lo siguiente:

cree estas carpetas en almacenamiento / marco:

  • sessions
  • views
  • cache

Ahora debería funcionar

Mauricio Wanderley Martins
fuente
21
Combiné esto con php artisan cache: clear y php artisan config: clear y php artisan view: clear de la respuesta a continuación y luego funcionó
cja
Puede eliminar la carpeta de almacenamiento manualmente y ejecutar el comando "php artisan storage: link" a través de cmd. Luego cree carpetas como se sugirió anteriormente. Mejor puede mantener la carpeta de almacenamiento anterior como copia de seguridad y luego copiar: pegue la carpeta de marco en la nueva ruta de almacenamiento.
Niladri Banerjee - Uttarpara
Tuve exactamente este problema y la solución funcionó, fue el resultado de excluir deliberadamente toda la carpeta del marco de mi producto de subversión debido a su contenido de cambio de archivo temporal constante. Luego, al configurar la reproducción en un nuevo sistema, estas carpetas no existían. Pensé que compartiría ...
AdamJones
3
¡git no clona carpetas vacías! Crearé un archivo folder.keeper para esas 3 carpetas.
Tiefan Ju
Sí, porque no necesito versiones de estas carpetas
Mauricio Wanderley Martins
46

Prueba esto:

  1. php artisan cache:clear
  2. php artisan config:clear
  3. php artisan view:clear
la caída
fuente
11
No funciono para mi. Llegué [InvalidArgumentException] Please provide a valid cache path. de nuevo
MattCochrane
En mi caso tengo una pesadilla si corro php artisan cache:clear!
Ben
32

Entonces, aparentemente, lo que sucedió fue que cuando estaba duplicando mi proyecto, la carpeta del marco dentro de mi carpeta de almacenamiento no se copió al nuevo directorio, esto causó mi error.

usuario3718908
fuente
Lo mismo me sucedió cuando estaba haciendo una rutina composer update. Todavía no hay solución.
Peter
Verifique todas sus rutas y asegúrese de que no falten carpetas o archivos en ninguna parte.
user3718908
44
también verifique si la carpeta marco tiene todos los subdirectorios con sus respectivos permisos
manix
Parece que mi problema tiene algo que ver con "Lanzar excepción si la ruta de la memoria caché está vacía". Cambio en Laravel 5.2.40 laraver.xyz/projects/Laravel/versions/v5.2.40 No puedo revertir el cambio - después de actualizar todo el compositor o los comentarios artesanales fallan
Peter
en mi caso a la aplicación le faltaban carpetas dentro del directorio de almacenamiento
Chaudhry Waqas
21

Puede editar su readme.md con instrucciones para instalar su aplicación laravel en otro entorno como este:

## Create folders

```
#!terminal

cp .env.example .env && mkdir bootstrap/cache storage storage/framework && cd storage/framework && mkdir sessions views cache

```

## Folder permissions

```
#!terminal

sudo chown :www-data app storage bootstrap -R
sudo chmod 775 app storage bootstrap -R

```

## Install dependencies

```
#!terminal

composer install

```
Alex B. Santos
fuente
me salvas el día :)
Mankeomorakort
15

La causa de este error se puede rastrear desde Illuminate \ View \ Compilers \ Compiler.php

public function __construct(Filesystem $files, $cachePath)
{
    if (! $cachePath) {
        throw new InvalidArgumentException('Please provide a valid cache path.');
    }

    $this->files = $files;
    $this->cachePath = $cachePath;
}

BladeCompiler invoca el constructor en Illuminate \ View \ ViewServiceProvider

/**
 * Register the Blade engine implementation.
 *
 * @param  \Illuminate\View\Engines\EngineResolver  $resolver
 * @return void
 */
public function registerBladeEngine($resolver)
{
    // The Compiler engine requires an instance of the CompilerInterface, which in
    // this case will be the Blade compiler, so we'll first create the compiler
    // instance to pass into the engine so it can compile the views properly.
    $this->app->singleton('blade.compiler', function () {
        return new BladeCompiler(
            $this->app['files'], $this->app['config']['view.compiled']
        );
    });

    $resolver->register('blade', function () {
        return new CompilerEngine($this->app['blade.compiler']);
    });
}

Entonces, rastreando más allá, el siguiente código:

$this->app['config']['view.compiled']

generalmente se encuentra en su /config/view.php, si usa la estructura laravel estándar.

<?php
return [
    /*
    |--------------------------------------------------------------------------
    | View Storage Paths
    |--------------------------------------------------------------------------
    |
    | Most templating systems load templates from disk. Here you may specify
    | an array of paths that should be checked for your views. Of course
    | the usual Laravel view path has already been registered for you.
    |
    */
    'paths' => [
        resource_path('views'),
    ],
    /*
    |--------------------------------------------------------------------------
    | Compiled View Path
    |--------------------------------------------------------------------------
    |
    | This option determines where all the compiled Blade templates will be
    | stored for your application. Typically, this is within the storage
    | directory. However, as usual, you are free to change this value.
    |
    */
    'compiled' => realpath(storage_path('framework/views')),
];

realpath (...) devuelve falso, si la ruta no existe. Invocando así

'Please provide a valid cache path.' error.

Por lo tanto, para deshacerse de este error, lo que puede hacer es asegurarse de que

storage_path('framework/views')

o

/storage/framework/views

existe :)

ghabx
fuente
11

Necesita crear carpetas dentro del "marco". Por favor, siga estos pasos:

cd storage/
mkdir -p framework/{sessions,views,cache}

También debe establecer permisos para permitir que Laravel escriba datos en este directorio.

chmod -R 775 framework
chown -R www-data:www-data framework
Sohail Ahmed
fuente
Con permisos de 777 significa que cualquier persona que sea usuario en el mismo servidor puede leer, escribir y ejecutar el archivo.
Sohail Ahmed
1
sessionsdirectorio en caso plural, nosession
Evgeniy Maynagashev
1
@Evgeniy Maynagashev, Sí, tienes razón. Fue un error tipográfico, solo reparó la ortografía. Gracias
Sohail Ahmed
7

Compruebe si existen las siguientes carpetas, si no, cree estas carpetas.

  • almacenamiento / framework / caché
  • almacenamiento / framework / sesiones
  • almacenamiento / framework / testing
  • almacenamiento / marco / vistas
RAMA KRISHNA
fuente
6

Resolví el problema cuando creé una carpeta de marco dentro de la carpeta de almacenamiento y sus sesiones de subcarpetas , vistas y caché .

Vaya a su cmd o terminal, luego escriba la ruta raíz del proyecto y luego escriba lo siguiente:

cd storage
mkdir framework
cd framework
mkdir sessions
mkdir views
mkdir cache

Vuelva a la ruta raíz de su proyecto nuevamente y ejecute la actualización del compositor

Después de eso, el artesano funciona perfectamente.

Weber
fuente
6

Intenta lo siguiente:

cree estas carpetas en almacenamiento / marco:

  • sesiones
  • puntos de vista
  • caché / datos

si todavía no funciona, intente

php artisan cache:clear
php artisan config:clear
php artisan view:clear

si obtiene un error de no poder borrar el caché. Asegúrese de crear una carpeta de datos en caché / datos

Mohsin Younas
fuente
5

Por favor corre en la terminal,

   sudo mkdir storage/framework
   sudo mkdir storage/framework/sessions
   sudo mkdir storage/framework/views
   sudo mkdir storage/framework/cache
   sudo mkdir storage/framework/cache/data

Ahora tienes que cambiar el permiso,

   sudo chmod -R 777 storage
Rasheduzzaman
fuente
Si desea crear dinámicamente, también puede crear como, $paths = ["storage","storage/framework", "storage/framework/sessions", "storage/framework/views", "storage/framework/cache", "storage/framework/cache/data", "storage/logs", "storage/fonts"]; `foreach ($ caminos como $ camino) {` `if (! File :: isDirectory ($ camino)) {` File::makeDirectory($path, 0777, true, true); } }
Rasheduzzaman
2

/ ruta / a / laravel / storage / framework /

sesiones vistas caché

Arriba es la solución de trabajo

Vibhuti Narayan Singh
fuente
1

Problema de mi lado (mientras se implementaba en localhost): faltaba la carpeta de vistas ... así que si no tiene la carpeta del marco, deberá agregar carpetas. pero si ya existe una carpeta de marco, asegúrese de que todas las carpetas anteriores es decir 1. caché 2. sesión 3. vistas

existe en su directorio de marco.

Farid Abbas
fuente
0

Resolví este problema agregando esta línea en mi index.php:

$app['config']['view.compiled'] = "storage/framework/cache";
crius
fuente
0

Puede faltar su directorio de almacenamiento o uno de sus subdirectorios. El directorio de almacenamiento debe tener todos los subdirectorios que se incluyen con la instalación de Laravel.

Naveed Ali
fuente
-1

Mis 2 centavos

Elimine todo lo que esté dentro del almacenamiento y luego haga esto:

> cd storage/
> mkdir -p framework/{sessions,views,cache}
> chmod -R 777 framework

// This last line depends on your user group settings so 
// it may not be applicable to you.
> chown -R www-data:www-data framework

Trabajó para mí =)

conejo blanco
fuente
-2

Error: "Proporcione una ruta de caché válida". error.

Si se produce este tipo de error, entonces la solución dada a continuación:

cree una carpeta de datos dentro de almacenamiento / marco / caché

usuario13483704
fuente
2
¡Bienvenido a Stack Overflow! Proporcione respuestas que incluyan no solo la solución, sino al menos algunas palabras sobre cómo lo descubrió.
zixuan