Non interceptée ReflectionException: journal de Classe n'existe pas Laravel 5.2
Je suis en train d'essayer de cloner un projet existant de la mine à partir de github. Après clone-je exécuter composer install
pendant le processus, j'ai l'erreur suivante:
Uncaught ReflectionException: Class log does not exist
Je suis en cours d'exécution Laravel 5.2 sur Centos 7.
J'ai vu des références à:
- Supprimant des espaces à l'intérieur de la
.env
fichier. - Supprimant le répertoire vendor & re-installation de
- L'élimination de certains paquets nécessaires au compositeur.json
J'ai:
- Remplacé mon
.env
avec leexample.env
pour éviter toutes les erreurs de configuration personnalisé. - J'ai enlevé & re-cloné le repo.
- J'ai utilisé le défaut
composer.json
livré avec Laravel pour voir si cela fait une différence.
Aucun des ci-dessus m'ont apporté joie. J'ai également le même environnement mis en place sur une autre machine avec l'application fonctionne bien. La seule différence ici, c'est la machine (de travail) n'a pas été cloné à partir de git - il était la construction initiale de l'environnement.
La trace de la pile que je reçois:
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
Toute aide serait grandement appréciée. Merci à l'avance.
- Je vais regarder cette réponse trop, depuis que j'ai eu un problème similaire. Je suis sur laravel 5.1.28 et l'a fait récemment compositeur de mise à jour pour la première fois en peu de temps, et depuis, je reçois cette erreur pour les versions de production sur heroku. J'ai roulé la compositeur.json changement que j'ai fait, mais l'on soupçonne la présence ne change pas; c'est quelque chose à voir avec allll les mises à jour qui est tombé dans vendeur 🙁
- J'ai posté une réponse pour vous de jeter les yeux sur. Il m'a aidé à traquer mon erreur...
- merci, @jakehallas! J'utilise postgres - savez-vous si il y a une extension similaire que j'aurais besoin, ou est-il suffisamment précis pour que mon problème est probablement quelque chose d'autre? Je suis un total newbie donc les questions de ce genre sont moyen de sortir de ma zone de confort :/
- et redémarrez votre serveur http.
- Pour moi, cette habitude qui s'est passé quand j'ai oublié d'ajouter "Utiliser le Journal," au sommet d'un dossier où les fichiers requis sont inclus..et utilisé à l'intérieur des méthodes.
- Merci, j'ai eu la correction d'une erreur en ajoutant des guillemets autour de la .env valeurs que contient l'espace.
- Aussi stupide que cela devrait sonner, cette erreur a été provoquée par simple manque une virgule séparant la déclaration des valeurs d'un tableau dans un fichier de config. Mettre la virgule entre les deux valeurs et l'erreur a disparu... ! Je suis l'aide de Laravel 5.1
Vous devez vous connecter pour publier un commentaire.
Bon, après de nombreuses heures de creuser, la solution pour mon problème a été trouvé. La raison pour laquelle je dis que mon problème est que les
Exception
est très mal conduit.Uncaught ReflectionException: Class log does not exist
Cette exception signifie simplement Laravel essayé de se connecter une erreur, mais il ne pouvait pas instancier Laravel est
Log
classe. Ce n'est pas le Journal de classe allant de plain-pied profil ou de la cacher. C'est parce que Laravel est toujours en cours à travers son processus de démarrage, & a pas encore la charge de laLog
classe.Donc, cette exception est levée, car une erreur s'est produite pendant le cycle d'amorçage de Laravel - lorsque cette erreur s'est produite, elle a tenté de jeter une exception, mais il ne peut pas lever une exception parce que la
Log
classe est encore le charger. D'où la raison pour laquelle nous obtenons uneReflectionException
Ce a eu lieu dans toutes les versions de Laravel la seule raison pour laquelle nous l'avons vu à l'exception levée dans laravel 5.1 <= est parce qu'auparavant Laravel silencieusement ignoré le problème & réalisé à travers son processus de démarrage - en gros, votre application serait de même à briser toutefois de ne pas recevoir les
Log class exception
.Dans mon cas particulier, je n'ai pas eu le
php-mysql
extension installée provoquant Laravel de pause au cours de son processus de démarrage.En fin de compte, il est incroyablement difficile à déboguer ce que vous avez fait de mal, à cause de l'erreur a été très mal conduit.
J'espère que cela aide quelqu'un!
php-mysql
var_dump()
quelques informations auprès de l'lignes que mentionné dans l'erreur, et de rien, juste des tableaux vides...Dans votre .fichier env assurez-vous que vous n'avez pas d'espaces pour les valeurs
par exemple, c'est permis
ce n'est pas permis
vous pouvez placer la valeur dans les citations, si vous avez des espaces.
aimerais vraiment qu'ils ont utilisé json pour la .fichier env, peut-être qu'on devrait demander à la fonction
L'erreur sous-jacente est révélé par la modification de
vendor/laravel/framework/src/Illuminate/Container/Container.php
et en plaçant la suivante en haut:(Crédit à https://laracasts.com/discuss/channels/general-discussion/class-log-does-not-exist/replies/160902 pour cette idée).
À ajouter à la liste des causes profondes de ce message, la définition d'une fermeture dans un fichier de configuration et appel
php artisan config:cache
par la suite sera la cause de cela (au moins dans Laravel 5.1). Solution pour cette manifestation: ne pas définir de fermetures dans Laravel fichiers de configuration, par https://github.com/laravel/framework/issues/9625 .class config extends \Illuminate\Log\Writer { function __construct() { $this->monolog = new Monolog("local"); } public function get($test, $test2) { return $test; } } }
Supprimer le fichier
bootstrap/cache/config.php
. Ce fichier ne peut pas être affiché sur windows, le cas échéant, utiliser des doubles commandant par exemple. Definitelly va travailler!EDIT:
Elle peut être causée par la mise en cache .env fichier, si c'est votre cas, essayez de retirer
bootstrap/cache/config.php
J'ai remarqué le même comportement après l'ajout de quelques lignes de mon .env fichiers. Les espaces ne sont pas autorisés sans les guillemets, et donc cela peut être fixe comme:
APP_YOUR_NAME="A value with some spaces"
Dans mon cas, le manque d'extension PDO est le problème. Après l'installation, le problème était résolu.
EDIT::
Parce que je n'étais pas satisfait avec le plutôt maladroit de débogage et de retravailler les chemins, etc pour obtenir la machine virtuelle en cours d'exécution en douceur, j'ai réfléchi sur le processus et réinstallé le vagabond de la boîte de laravel/homestead (
virtualbox 1.0.1
)Pour moi la question potentiellement découle d'un manque d'virgule dans
config/app.php
. Le manque des virgules probablement stoppé le processus de compilation et de cracher leUncaught ReflectionException: Class log does not exist
erreur.Ce n'est pas une réponse directe, mais sert plus comme un guide pour ceux qui s'aventurent dans cet abîme de silence erreurs
Système: macOS Sierra
Vagrant:
1.9.1
(Dernière Version au moment de l'écriture)VM: laravel/homestead (
virtualbox 0.4.0
)Laravel Version:
5.1.*
PHP:
7.0.*
Après plusieurs tentatives pour résoudre le problème qui comprennent:
Critique, (pour moi), il semblait que c'était le virtualbox version de la configuration initiale:
vagrant box add laravel/homestead
Au lieu d'essayer fournir le numéro de version de la sorte:
vagrant box add laravel/homestead
--box-version 0.4.0
divers:
J'ai essayé et a échoué avec l'
laravel/homestead
virtualbox versions:1.0.1
(par défaut)et
laravel/homestead-7
:0.2.1
J'étais en tapant CMD dans la CLI et accidentellement tapé dans l'app fichier de configuration. J'ai eu à suivre cette procédure afin de trouver le problème.
Solution, comment trouver le problème:
https://laracasts.com/discuss/channels/general-discussion/class-log-does-not-exist?page=2
Aussi cela est dû à un erreur de syntaxe dans un fichier, le répertoire/conf ou .fichier env.
Dans mon cas j'ai eu cette erreur parce que j'ai oublier de mettre
::class
à la fin de la ligne lors de l'ajout d'un fournisseur de services et de la façade, au tableau, les fournisseurs et les alises dans conf/app.php fichier. J'ai corrigé cela et l'erreur a disparu.Ce problème est généralement causé par les espaces entre les mots dans le .fichier env.
Assurez-vous que si vous avez quelque chose comme
vous la remplacez par
Cette Erreur Vient laravel 5.2 & > versions:
Mes erreurs sont:
Tips1:
lorsque Vous manque (;) à la fin de votre code dans le Fichier de configuration
Autre Erreur de syntaxe Cette erreur vient.
Mon code d'Erreur:
Code Correct: Manquantes (;) à la Fin de return Array
Cette erreur peut être causée par une erreur dans l'un des fichiers de configuration.
Pour localiser le fichier qui en est la cause, de changer la fonction loadConfigurationFiles dans /vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadConfiguration.php pour:
Exécuter php artisan et le dernier chargement de la "clé" est le fichier de configuration de l'origine de l'erreur.
Corriger et n'oubliez pas de supprimer les de votre var_dump de commande...
Bonne chance.
Dans mon cas, j'avais utilisé le
route()
méthode dans un fichier de config. Évidemment, cette méthode ne fonctionne pas parce que ces fichiers n'utilisez pas l'Éclairer Helper, ils sont simples .php avec des données.Les fichiers de configuration sont à lire avant l'instanciation de la classe de Log, ce qui provoque l'erreur que Jakehallas explique très bien.
Oui comme dit par @jakehallas . Ses pas liée à ce qui est affiché dans l'exception.
En fait, si il n'y a aucune dababase question ou d'autres config varilables question des causes de cette.
En fait, quand j'ai essayé de changer quelque chose dans database.php j'ai juste dupliqué même fichier database-copy.php. Je n'ai pas execpt cela cause problème.
Après avoir vécu ce que j'ai fait avant, j'ai juste enlevé cette database-copy.php fichier de travail bien..
Merci ...
Résolu ce problème, après la suppression de l'espace dans le .env file (vue .env sublime parce que l'éditeur vi ne montre pas d'espace à la fin de l' .fichier env.) et exécuter les commandes ci-dessous.
Commandes:
J'ai essayé beaucoup de solutions proposées ici et d'ailleurs. Il ne fonctionne pas pour moi. Je l'ai résolu en supprimant manuellement /var/www/html/bootstrap/cache/compiled.php et mise à jour le chargement automatique de fichiers:
J'ai eu le même problème et aucune des solutions ici travaillé
J'ai trouvé qu'il y a une exception de refus d'autorisation de
config
dossierAprès la fixation de la permission, tout a fonctionné!
Comment le comprendre?
Mettre un point de rupture dans
vendor/laravel/framework/src/illluminate/Foundation/Http/Kernel.php
la ligne 101 à l'intérieur de la prise de la poignée de la fonction.
C'est de cette façon que j'ai trouvé sur le refus d'une autorisation.
Ce type d'erreur: si vous avez raté toute les dépendances de votre projet.
Exécuter
php composer.phar update
Exécuter
php artisan config:cache
résolu pour moi.Ou si vous êtes sur un hébergement mutualisé sans accès à la Borne/CMD, ajoutez ceci à votre
Routs.php
fichier:Ensuite, allez à
yourdomain.com/config-cache
pour exécuter ce script.Depuis, personne n'a mentionné orchestre/testbench pourtant, je pensais que je venais d'ajouter la solution à mon problème.
J'ai écrit un Laravel paquet quand j'ai eu cette erreur dans l'une de mes tests unitaires. J'ai été en utilisant
orchestra/testbench
pour permettre le test de Laravel spécifiques à certaines parties du code.Le problème était simplement que la classe de test a été l'extension de
PHPUnit\Framework\TestCase
au lieu deOrchestra\Testbench\TestCase
.