我一直在努力解决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。