Laravel 5 muestra ErrorException file_put_contents no pudo abrir la secuencia: no existe tal archivo o directorio

84

Tengo un proyecto en Laravel 5 y trabajo con él en la oficina y también en casa. Funciona bien, pero recientemente en casa dejó de funcionar. Laravel me muestra dos ErrorException

file_put_contents(G:\project\storage\framework\views/751d8a0fd8a7d4138c09ceb6a34bb377aa2d6265.php):
failed to open stream: No such file or directory

y

file_put_contents(G:\project\storage\framework/sessions/aIXycR4LIAUBVIqZu0T590paOMIpV8vfZGIroEp0):
failed to open stream: No such file or directory

Estoy buscando una decisión de problema con Google y encuentro información sobre los derechos correctos. Todos los consejos son sobre Linux, pero también trabajo en Windows en la oficina y en casa.

Cuando trato de borrar el caché de la aplicación y ver el caché, el artesano me habla - ... borrado. Pero los datos y las vistas de la caché están presentes en el almacenamiento.

¿Como puedo solucionar este problema?

¡Gracias por adelantado!

Evgeniy
fuente
6
Puede intentar limpiar el caché "php artisan cache: clear" Estoy en linux, así que no estoy seguro sobre el permiso en Windows, pero verifique las propiedades de la carpeta si no es de solo lectura (haga clic derecho en carpeta-> propiedades)
educolo
@educolo No creo que el problema sea de derechos de directorio, porque varios meses estuvo bien.
Evgeniy

Respuestas:

148

La mejor manera de resolver este problema es ir al directorio laravel/bootstrap/cachey eliminar el config.phparchivo. o puede cambiarle el nombre config.php.old y su problema se solucionará. Feliz codificación :-)

Amit Verma
fuente
7
Sí, eso ayudaría, pero borrar el caché puede hacer el trabajo. Ejecutar fuera de Vagrant Box php artisan config:cachereconstruirá las rutas para las aplicaciones. Cuando ejecutamos una aplicación dentro de la caja vagabunda, las rutas son diferentes a las rutas para las pruebas al anochecer, por ejemplo.
George Mylonas
¿Por qué la configuración de laravel hace que laravel muera? Funciona gracias.
Andrew
config: cache no se corrigió por alguna razón.
Andrew
Limpio, simple y directo para aquellos que no pueden acceder a través de SSH en ese momento o en general. ¡Gran respuesta!
lzoesch
config: clear funciona para mí además del cambio de nombre del archivo también funciona,
Mohammed Omer
66

Por lo general, debe ejecutar el php artisan config:cachecomando como parte de su rutina de implementación de producción. Como solución a su problema, le sugiero que vuelva a crear el archivo de caché para una carga de configuración más rápida.

Para hacer esto, ejecute los siguientes comandos de Artisan en su línea de comando

  • php artisan cache:clear
  • php artisan config:cache

Puede ejecutar el comando mediante programación agregando lo siguiente a sus rutas:

Route::get('/clear-cache', function() {
    $exitCode = Artisan::call('cache:clear');
    $exitCode = Artisan::call('config:cache');
    return 'DONE'; //Return anything
});

Y luego llame a la clear-cacheruta desde su navegador.

Espero que esto sea útil.

Eliseo Senoo
fuente
49

Después de algunas investigaciones, entiendo: tengo ubicaciones de proyectos raíz muy similares, pero diferentes, y está almacenado en caché /bootstrap/cache. Después de que comenzó el proyecto de limpieza de caché.

Evgeniy
fuente
esto resolvió mi problema, después de que muchas soluciones sugeridas fallaron, gracias
Agung Sagita
@AgungSagita no hay problema;)
Evgeniy
eres un salvavidas
Festus Yuma
Esto resolvió mi problema, habiendo probado muchas otras alternativas. Gracias :)
binmosa
Ojalá hubiera visto esto, ya que es la respuesta a mi pregunta sobre un proveedor de servicios que falta: stackoverflow.com/questions/58192052/…
j3py
14

En realidad, enfrenté este problema cuando moví mi proyecto del servidor al local.

en

almacenamiento / marco

Se requieren cuatro carpetas básicas caché, sesiones, pruebas, vistas

En mi caso, las sesiones que faltaban podrían estar en gitignore.

Así que creé manualmente la carpeta de sesión y actualicé el navegador y estaba funcionando.

Entonces, si eliminamos este problema, se puede resolver cualquier carpeta que falte.

shivanisdev
fuente
3
Esto es cierto
Ahmad Jamil Al Rasyid
7

Este tipo de problema generalmente ocurre al migrar un servidor a otro, una carpeta a otra. Laravel mantiene el caché y la configuración (nombre del archivo) cuando la carpeta es diferente, entonces ocurre este problema.

Solución Ejecute el siguiente comando:

php artisan config:cache

https://laravel.com/docs/5.6/configuration#configuration-caching

Bijaya Kumar Oli
fuente
6

Apache + WSL en Windows

Este es un error tonto, y una respuesta diferente en comparación con los demás, pero lo agregaré porque me pasó a mí.

Si usa WSL (linux bash en windows) para administrar su aplicación laravel, mientras usa su apache de Windows para ejecutar su servidor, entonces ejecutar cualquier comando de almacenamiento en caché en el wsl almacenará la ruta de Linux en lugar de la ruta de Windows a las sesiones y otras carpetas. .

Solución

Simplemente ejecute los comandos de borrado de caché en PowerShell, en lugar de en WSL.

$ php artisan optimize

Fue suficiente para mi.

Azeirah
fuente
Me encontré con el mismo problema. Estoy ejecutando Windows y también una instancia de Linux en una máquina virtual VMWare. Esto me permite probar tanto en Windows como en Linux, pero cuando ejecuté el php artisan config:cachecomando en Windows, mi Linux ya no cargaba las páginas web de la aplicación. Ir a la carpeta bootstrap / cache y eliminar el archivo config.php lo resolvió.
David Tran
4

Prueba con estos comandos que te han sido útiles con esos errores

ruta \ proyecto \ almacenamiento \ marco \ vistas ...

php artisan view:clear

ruta \ proyecto \ almacenamiento \ marco / sesiones ...

php artisan config:cache
Carlos Avalos
fuente
2
Si publica una nueva respuesta mientras ya hay varias respuestas con voto positivo, debe agregarle alguna explicación más para que otros puedan aprender de su respuesta
Nico Haase
4

En el caso de alojamiento compartido cuando no tiene acceso a la línea de comandos, simplemente navegue a la carpeta laravel / bootstrap / cache y elimine (o cambie el nombre) config.php y ¡ya está!

Dibyendu Mitra Roy
fuente
2

La mejor manera de resolver este problema es ir al directorio laravel/bootstrap/cachey eliminar todos los archivos de la caché.

Para hacer esto, ejecute los siguientes comandos de Artisan en su línea de comando
1. php artisan config:clear
2. php artisan cache:clear
3. php artisan config:cache

En su panel o servidor, puede ejecutar comandos agregando lo siguiente a sus rutas:

    Route::get('/clear-cache', function() {
        $run = Artisan::call('config:clear');
        $run = Artisan::call('cache:clear');
        $run = Artisan::call('config:cache');
        return 'FINISHED';  
    });

Y luego llame a la  www.yourdomain.com/clear-cache ruta desde su navegador.

Rashed Zaman
fuente
2

cambiar el nombre de /bootstrap/cache/config.php a config.php.old no funciona para mí ni borrar el caché con los comandos artisan

  1. php artisan config: claro
  2. caché artesanal php: claro
  3. php artisan config: caché

Y por alguna extraña razón, no puedo cambiar el permiso del propietario en los directorios, así que mi solución estaba ejecutando mi IDE (Visual Studio Code) como administrador, y todo funciona.

Mi proyecto está en una ruta F: / de otro disco.

hidroquino
fuente
1

Quizás haya un problema con su archivo de redacción. Tu podrías intentar:

  • composer install instala los paquetes del proveedor de acuerdo con composer.lock (o crea composer.lock si no está presente),
  • composer update siempre regenera composer.lock e instala las últimas versiones de los paquetes disponibles basados ​​en composer.json

  • composer dump-autoload no descargará nada. Simplemente regenera la lista de todas las clases que deben incluirse en el proyecto (autoload_classmap.php). Ideal para cuando tienes una nueva clase dentro de tu proyecto. Idealmente, ejecute composer dump-autoload -o, para una carga más rápida de sus páginas web. La única razón por la que no está predeterminado es porque se tarda un poco más en generar (pero solo se nota ligeramente)

fuente

Rachael MacKeigan
fuente
Desafortunadamente, no ayudó. Intento todos tus consejos.
Evgeniy
Lo siento :( Dijiste en tu publicación original que pensabas que podrían ser los derechos / permisos. Esta publicación tiene mucha información sobre cómo cambiar los derechos en archivos y carpetas si crees que ese podría ser el problema. No trabajo con Windows, así que no sé mucho sobre eso. Espero que te funcione.
Rachael MacKeigan
No creo que el problema esté relacionado con los derechos de directorio, porque durante varios meses estuvo bien. Según recuerdo, actualicé algunos paquetes de Laravel antes y luego dejó de funcionar. Pero al día siguiente en la oficina el proyecto empezó bien.
Evgeniy
1

La razón de este problema son los archivos de caché en localhost. De acuerdo con eso, he intentado varias cosas de la siguiente manera para borrar el caché de mi proyecto, pero cada vez he fallado.

  • Intenté borrar los comandos de cahe cambiando el archivo web.php (con códigos artesanales)
  • Intenté borrar la caché conectando SSH (a través de PUTTY)
  • Intenté alojar mi proyecto en un subdominio dentro de crear un nuevo directorio público

Así que encontré una solución para este problema después de que todos y cada uno de los pasos anteriores fallaron y funcionó perfectamente para mí. He eliminado el cache.php archivo en host_route / bootstrap / cache directorio.

Creo que esta respuesta ayudará a su problema.

Roshan Aravinda
fuente
1

En mi caso, no fue nada que pudiera arreglarse con los comandos php artisan. El problema eran los permisos de carpeta para la carpeta / storage. El error no lo dejó claro.

Peter Drinnan
fuente
1

Si está ejecutando laravel dentro de Docker, acceda a su sistema de archivos

$ docker exec -it name-of-laravel-container /bin/bash

A continuación, navegue hasta el directorio raíz de sus proyectos de laravel. Asegúrese de tener dentro de la carpeta de almacenamiento / marco :

  1. cache
  2. sesiones
  3. pruebas
  4. puntos de vista

Y deben ser legibles y escribibles.

Bimal
fuente
1

Resolví este problema creando una storage\framework\sessionscarpeta.

tyasird
fuente
0

Tuve problemas similares debido a .gitignore para la /storagecarpeta en la primera máquina, luego cloné el repositorio en la segunda máquina y laravel fue una revisión para escribir el caché de sesiones

Entonces, crear una carpeta manualmente /storage/sessionspodría ser una solución.

Sergey Khmelevskoy
fuente
0

la solución que funcionó para mí es simplemente servir la aplicación como administrador si está

  1. encendido maco linuxusosudo php artisan serve
  2. en Windows intente abrir CMDcomo un adminstratory luego vaya al directorio del proyecto y ejecutephp artisan serve
Ntwari Clarance Liberiste
fuente
0

Limpiar el contenido de storage/framework/cachehizo el truco para mí. Nada más funcionó ...

Karsai Péter
fuente
0

Usé Laravel 8, esta es mi solución

Ir a: los datos del
directorio de permisos de almacenamiento / marco / caché / conjunto de datos son 777

Ha funcionado para mi

Infomaster
fuente
0

Esto hizo la magia por mí. chmod -Rf 0777 almacenamiento

Único
fuente