"Laravel 'artisan' command produces no output"......一个有趣的发现,可以解释出了什么问题



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

  • php artisan2 -V运行到$kernel对象尝试运行命令,然后退出的程度。 没有抛出异常;程序只是停止,从未从方法调用返回。 但。。。哈利路亚!...
  • php7 artisan2 -V产生了回溯!(区别在于 PHP-5 与 7。

Exception Caught! It is: 'Class log does not exist' #0 vendorlaravelframeworksrcIlluminateContainerContainer.php(734): ReflectionClass->__construct('log') #1 vendorlaravelframeworksrcIlluminateContainerContainer.php(629): IlluminateContainerContainer->build('log', Array) #2 vendorlaravelframeworksrcIlluminateFoundationApplication.php(697): IlluminateContainerContainer->make('log', Array) #3 vendorlaravelframeworksrcIlluminateContainerContainer.php(849): IlluminateFoundationApplication->make('log') #4 vendorlaravelframeworksrcIlluminateContainerContainer.php(804): IlluminateContainerContainer->resolveClass(Object(ReflectionParameter)) #5 vendorlaravelframeworksrcIlluminateContainerContainer.php(774): IlluminateContainerContainer->getDependencies(Array, Array) #6 vendorlaravelframeworksrcIlluminateContainerContainer.php(629): IlluminateContainerContainer->build('AppExceptions...', Array) #7 vendorlaravelframeworksrcIlluminateFoundationApplication.php(697): IlluminateContainerContainer->make('AppExceptions...', Array) #8 vendorlaravelframeworksrcIlluminateContainerContainer.php(230): IlluminateFoundationApplication->make('AppExceptions...', Array) #9 vendorlaravelframeworksrcIlluminateContainerContainer.php(731): IlluminateContainerContainer->IlluminateContainer{closure}(Object(IlluminateFoundationApplication), Array) #10 vendorlaravelframeworksrcIlluminateContainerContainer.php(629): IlluminateContainerContainer->build(Object(Closure), Array) #11 vendorlaravelframeworksrcIlluminateFoundationApplication.php(697): IlluminateContainerContainer->make('IlluminateCont...', Array) #12 vendorlaravelframeworksrcIlluminateContainerContainer.php(1178): IlluminateFoundationApplication->make('IlluminateCont...') #13 vendorlaravelframeworksrcIlluminateFoundationConsoleKernel.php(261): IlluminateContainerContainer->offsetGet('IlluminateCont...') #14 vendorlaravelframeworksrcIlluminateFoundationConsoleKernel.php(117): IlluminateFoundationConsoleKernel->reportException(Object(SymfonyComponentDebugExceptionFatalThrowableError)) #15 artisan2(42): IlluminateFoundationConsoleKernel->handle(Object(SymfonyComponentConsoleInputArgvInput), Object(SymfonyComponentConsoleOutputConsoleOutput)) #16 {main}

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

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

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

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

(我还发现在我的环境中有必要显式指定 PHP-7。

最新更新