php laravel centos7 laravel-5.2

php - ReflectionException no capturado: el registro de clase no existe Laravel 5.2



centos7 laravel-5.2 (22)

Además, esto se debe a un error de sintaxis en algún archivo en el directorio conf / o en el archivo .env . En mi caso, recibí este error porque olvido poner ::class al final de la línea al agregar un proveedor de servicios y fachada, a los proveedores de matrices y alises en el archivo conf / app.php. Corregí esto y el error desapareció.

Actualmente estoy tratando de clonar un proyecto mío existente de github. Después de clonar ejecuto la composer install durante el proceso, recibo el siguiente error:

Uncaught ReflectionException: Class log does not exist

Estoy ejecutando Laravel 5.2 en Centos 7.

He visto referencias a:

  • Eliminar espacios dentro del archivo .env .
  • Eliminar el directorio de proveedores y reinstalar
  • Eliminar ciertos paquetes requeridos en composer.json

Yo tengo:

  • .env mi .env con el example.env para evitar errores de configuración personalizados.
  • He eliminado y re-clonado el repositorio.
  • He usado el composer.json predeterminado enviado con Laravel para ver si eso hace la diferencia.

Nada de lo anterior me ha traído ninguna alegría. También tengo el mismo entorno configurado en otra máquina con la aplicación funcionando bien. La única diferencia aquí es que la máquina (en funcionamiento) no se clonó desde git: era el entorno de construcción inicial.

El seguimiento de la pila que estoy recibiendo:

PHP Fatal error: Uncaught ReflectionException: Class log does not exist in /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php:736 Stack trace: #0 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php(736): ReflectionClass->__construct(''log'') #1 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php(631): Illuminate/Container/Container->build(''log'', Array) #2 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(674): Illuminate/Container/Container->make(''log'', Array) #3 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php(845): Illuminate/Foundation/Application->make(''log'') #4 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php(800): Illuminate/Container/Container->resolveClass(Object(ReflectionParameter)) #5 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php(769): Illuminate/Container/Container->getDependenc in /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php on line 736

Cualquier ayuda sería muy apreciada. Gracias por adelantado.


Como nadie ha mencionado la orquesta / banco de pruebas todavía, pensé que simplemente agregaría la solución a mi problema.

Estaba escribiendo un paquete de Laravel cuando recibí este error en una de mis pruebas unitarias. Estaba usando orchestra/testbench para habilitar la prueba de partes específicas del código de Laravel.

El problema era simplemente que la clase de prueba estaba extendiendo PHPUnit/Framework/TestCase lugar de Orchestra/Testbench/TestCase .


De acuerdo, después de muchas horas de excavación, se ha encontrado la solución para mi problema . La razón por la que digo mi problema es porque la Exception es muy errónea.

Uncaught ReflectionException: Class log does not exist

Esta excepción simplemente significa que Laravel intentó registrar un error pero no pudo crear una instancia de la clase Log de Laravel. Esto no se debe a que la clase Log se pasee o se esconda. Esto se debe a que Laravel todavía está pasando por su proceso de arranque y aún no ha cargado la clase Log .

Por lo tanto, esta excepción se produce porque se produjo un error durante el ciclo de arranque de Laravel; cuando se produjo este error, intentó lanzar una excepción, pero no puede lanzar una excepción porque la clase Log todavía está cargada. De ahí la razón por la que obtenemos una ReflectionException

Esto ha ocurrido en todas las versiones de Laravel, la única razón por la que hemos visto la excepción lanzada en laravel 5.1 <= es porque previamente Laravel descartó el problema en silencio y continuó con su proceso de arranque; básicamente, su aplicación aún se rompería, sin embargo, no recibiría la Log class exception .

En mi caso particular, no tenía instalada la extensión php-mysql causó que Laravel se rompiera durante el proceso de arranque.

En última instancia, es increíblemente difícil depurar lo que pudo haber hecho mal debido a que el error fue muy erróneo.

¡Espero que esto ayude a alguien!


Ejecute php artisan config:cache resolvió por mí.

O si está en un alojamiento compartido sin acceso al Terminal / CMD, agregue esto a su archivo Routs.php :

Route::get(''/config-cache'', function() { Artisan::call(''config:cache''); return ''<h1>Config cache cleared successfully</h1>''; });

Luego vaya a yourdomain.com/config-cache para ejecutar este script.


El error subyacente se revela modificando vendor/laravel/framework/src/Illuminate/Container/Container.php y colocando lo siguiente en la parte superior:

<?php namespace { use Monolog/Logger as Monolog; class log extends Illuminate/Log/Writer { function __construct() { $this->monolog = new Monolog("local"); } } } //Add curly-braces around the original content, like so: namespace Illuminate/Container { //All original code in this file goes here. //... }

(Crédito a https://laracasts.com/discuss/channels/general-discussion/class-log-does-not-exist/replies/160902 por esta idea).

Para agregar a la lista de causas raíz de este mensaje, definir un cierre en un archivo de configuración y llamar a php artisan config:cache posteriormente causará esto (al menos en Laravel 5.1). Solución para esta manifestación: no defina los cierres en los archivos de configuración de Laravel, según https://github.com/laravel/framework/issues/9625 .


Eliminar el archivo bootstrap/cache/config.php . Es posible que este archivo no se muestre en Windows; de ser así, utilice el doble comandante, por ejemplo. Definitivamente funcionará!

EDITAR:

Puede ser causado por el almacenamiento en caché del archivo .env, si es su caso, intente eliminar bootstrap/cache/config.php


En mi caso, falta una coma en mi archivo de configuración (config / app.php) después de fusionar mi rama con master.

fue un error de sintaxis, pero no lo mostró.


En mi caso, había usado el método route() en un archivo de configuración. Obviamente, este método no funciona porque estos archivos no usan Illuminate Helper, son simples .php con datos.

Los archivos de configuración se leen antes de crear instancias de la clase Log, lo que provoca el error que Jakehallas explica muy bien.


En mi caso, la falta de extensión PDO fue el problema. Después de instalarlo, se solucionó el problema.


En su archivo .env asegúrese de no tener espacios para valores

por ejemplo esto está permitido

DB_USERNAME=homestead

Esto no esta permitido

DB_USERNAME=home stead

puede ajustar el valor entre comillas si tiene espacios.

DB_USERNAME="home stead"

realmente desearía que usaran json para el archivo .env, tal vez deberíamos solicitar esa característica


Estaba escribiendo un CMD en la CLI y accidentalmente lo escribí en el archivo de configuración de la aplicación. Tuve que seguir este procedimiento para encontrar el problema.

Solución, cómo encontrar el problema:

  • Haga una copia de seguridad de la carpeta de configuración. intenta eliminar una configuración en un
  • tiempo e intente ejecutar el comando compositor / artesano que falló. Cuando tú
  • buscar archivo que falló: busque una fila que posiblemente pueda fallar.
  • La razón por la que falla es: utiliza una constante de clase que no está cargada
  • todavía. Utiliza la clase / función que aún no está cargada. etc.

https://laracasts.com/discuss/channels/general-discussion/class-log-does-not-exist?page=2


Este error puede ser causado por un error en uno de los archivos de configuración. Para localizar qué archivo lo está causando, cambie la función loadConfigurationFiles en /vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadConfiguration.php a:

protected function loadConfigurationFiles(Application $app, RepositoryContract $repository) { foreach ($this->getConfigurationFiles($app) as $key => $path) { var_dump(''loading key: '' . $key . '' -- path: '' . $path); $repository->set($key, require $path); } }

Ejecute php artisan y la última "clave" de carga es el archivo de configuración que causa el error. Corrígelo y no olvides eliminar el comando your var_dump ... Buena suerte.


Este problema generalmente es causado por espacios entre palabras en el archivo .env. Asegúrate de tener algo como

SITE_DESCRIPTION = Social Network for dogs

lo reemplazas con

SITE_DESCRIPTION = ''Social Network for dogs''


Este tipo de error cuando se perdió alguna de las dependencias de su proyecto. Ejecute php composer.phar update


Noté el mismo comportamiento después de agregar algunas líneas a mis archivos .env. Los espacios no están permitidos sin comillas, por lo que esto se puede arreglar como:

APP_YOUR_NAME="A value with some spaces"


Probé muchas soluciones proporcionadas aquí y en otros lugares. A mi no me sirvió. Lo resolví eliminando manualmente /var/www/html/bootstrap/cache/compiled.php y actualizando los archivos de carga automática:

rm /var/www/html/bootstrap/cache/compiled.php composer dump-autoload


Resolvió este problema después de eliminar el espacio en el archivo .env ( ver .env en sublime porque el editor vi no muestra espacio al final del archivo .env ) y ejecutar los siguientes comandos.

Comandos:

php artisan config:clear php artisan cache:clear composer dump-autoload php artisan clear-compiled


Sí, como dijo @jakehallas. No está relacionado con lo que se muestra en excepción.

En realidad, si hay algún problema de dababase u otro problema de variables de configuración, esto lo causa.

En realidad, cuando intenté cambiar algo en database.php, simplemente dupliqué el mismo archivo que database-copy.php. No ejecuté esto causa un problema.

Después de pasar por lo que hice antes de eliminar este archivo database-copy.php, funciona bien.

Gracias ...


Tuve el mismo problema y ninguna de las soluciones aquí funcionó

Descubrí que hay una excepción de permiso denegado a la carpeta de config

Después de arreglar el permiso, ¡todo funcionó!

¿Cómo imaginarlo?

Ponga un punto de quiebre en vendor/laravel/framework/src/illluminate/Foundation/Http/Kernel.php

línea 101 dentro del retén de la función de manejo.

Así es como me enteré del permiso denegado.


Tuve un valor negativo como

BUSINESS_RECONCILIATION_DAYS=-8

Necesitaba envolver

BUSINESS_RECONCILIATION_DAYS="-8"


EDITAR::

Debido a que no estaba satisfecho con las rutas de depuración y reelaboración bastante torpes, etc. para que la VM funcionara sin problemas, reflexioné sobre el proceso y reinstalé la vavel box laravel / homestead ( virtualbox 1.0.1 )

Para mí, el problema potencialmente surgió de una coma que faltaba en config/app.php . La coma que falta probablemente detuvo el proceso de compilación y escupió la Uncaught ReflectionException: Class log does not exist .

Esta no es una respuesta directa, pero sirve más como una publicación guía para aquellos que se aventuran en este abismo de errores silenciosos.

Sistema: macOS Sierra

Vagabundo: 1.9.1 (última versión al momento de escribir)

VM: laravel / homestead ( virtualbox 0.4.0 )

Versión Laravel: 5.1.*

PHP: 7.0.*

Después de repetidos intentos de resolver el problema, que incluyen:

  1. reescritura, eliminando .env por posibles problemas de análisis
  2. php7.1 y los problemas de mcrypt / mbstring
  3. instalación de paquetes sugeridos por el compositor
  4. actualizar homestead.rb
  5. Problemas relacionados con la RUTA

Críticamente, (para mí) parecía que era la versión de virtualbox en la configuración inicial:

vagrant box add laravel/homestead

En su lugar, intente proporcionar el número de versión de esta manera:

vagrant box add laravel/homestead --box-version 0.4.0

misceláneo :

He intentado y he fallado con las siguientes laravel/homestead virtualbox:

  • 1.0.1 (predeterminado)

y laravel/homestead-7 :

  • 0.2.1

Uncaught ReflectionException: Class log does not exist

Este error viene laravel 5.2 y> versiones:

Mis errores son:

Tips1: cuando falta (;) final de su código en el archivo de configuración

Otro error de sintaxis Este error viene.

Mi código de error:

<?php return [ ''data'' => [ ''common'' => [ ''AuthKey1'' => "17086...........9a87a1", ''AuthKey2'' => "17086...........9a87a1", ''AuthKey3'' => "17043...........59969531", ], ] ]

Código correcto: Falta (;) Fin de la matriz de retorno

<?php return [ ''data'' => [ ''common'' => [ ''AuthKey1'' => "17086...........9a87a1", ''AuthKey2'' => "17086...........9a87a1", ''AuthKey3'' => "17043...........59969531", ], ] ];