首页 > 解决方案 > “Laravel 'artisan' 命令不产生任何输出”......一个有趣的发现可能解释出了什么问题

问题描述

php artisan我一直在努力解决命令不产生输出的问题(Windows 10 上的 Laravel 5.2 ...) 。我最终通过创建一个artisan2文件来开始调试,该文件打印正在进行的消息,并用于try..except尝试捕获任何错误。好吧,首先我发现了这个:

Exception Caught! It is: 'Class log does not exist' #0 \vendor\laravel\framework\src\Illuminate\Container\Container.php(734): ReflectionClass->__construct('log') #1 \vendor\laravel\framework\src\Illuminate\Container\Container.php(629): Illuminate\Container\Container->build('log', Array) #2 \vendor\laravel\framework\src\Illuminate\Foundation\Application.php(697): Illuminate\Container\Container->make('log', Array) #3 \vendor\laravel\framework\src\Illuminate\Container\Container.php(849): Illuminate\Foundation\Application->make('log') #4 \vendor\laravel\framework\src\Illuminate\Container\Container.php(804): Illuminate\Container\Container->resolveClass(Object(ReflectionParameter)) #5 \vendor\laravel\framework\src\Illuminate\Container\Container.php(774): Illuminate\Container\Container->getDependencies(Array, Array) #6 \vendor\laravel\framework\src\Illuminate\Container\Container.php(629): Illuminate\Container\Container->build('App\Exceptions\...', Array) #7 \vendor\laravel\framework\src\Illuminate\Foundation\Application.php(697): Illuminate\Container\Container->make('App\Exceptions\...', Array) #8 \vendor\laravel\framework\src\Illuminate\Container\Container.php(230): Illuminate\Foundation\Application->make('App\Exceptions\...', Array) #9 \vendor\laravel\framework\src\Illuminate\Container\Container.php(731): Illuminate\Container\Container->Illuminate\Container{closure}(Object(Illuminate\Foundation\Application), Array) #10 \vendor\laravel\framework\src\Illuminate\Container\Container.php(629): Illuminate\Container\Container->build(Object(Closure), Array) #11 \vendor\laravel\framework\src\Illuminate\Foundation\Application.php(697): Illuminate\Container\Container->make('Illuminate\Cont...', Array) #12 \vendor\laravel\framework\src\Illuminate\Container\Container.php(1178): Illuminate\Foundation\Application->make('Illuminate\Cont...') #13 \vendor\laravel\framework\src\Illuminate\Foundation\Console\Kernel.php(261): Illuminate\Container\Container->offsetGet('Illuminate\Cont...') #14 \vendor\laravel\framework\src\Illuminate\Foundation\Console\Kernel.php(117): Illuminate\Foundation\Console\Kernel->reportException(Object(Symfony\Component\Debug\Exception\FatalThrowableError)) #15 \artisan2(42): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #16 {main}

在我看来,Laravel 已经做了一些事情来抑制错误回溯,大概是为了让它可以发送到记录器……但它不能创建日志记录类……所以它根本不会产生任何东西。

现在,我还不知道为什么 Class log does not exist在这个项目上,当它确实存在时(即“artisan命令运行......”)在一个空白的新项目上。我希望有人能快速告诉我可能会有什么不同。 这应该如何工作?Laravel 如何自动构建该类?

尽管如此,这一发现可能会解释为什么artisan命令可以“退出而不产生任何输出”,正如我们在过去几年中不同时间在 SO 上看到的那样。

标签: laravellaravel-artisan

解决方案


嗯......我从来没有弄清楚为什么这对我的特定(旧......)项目不起作用,但我确实发现运行composer install(不是update)使问题消失。而且,在这一点上,对我来说真正唯一重要的是它最终确实消失了。我真的不知道发生了什么变化composer,所以突然artisan又开始工作了。

(我还发现有必要在我的环境中明确指定 PHP-7。)


推荐阅读