当我运行命令 php artisan schedule:run
时,它运行良好。但是,当我按如下方式将命令放入调度程序时:
* * * * * php /PATH/TO/PROJECT/artisan schedule:run >> /PATH/TO/PROJECT/storage/logs/scheduler.log 2>&1
每次运行时都会出现以下错误。
PHP Fatal error: Uncaught ReflectionException: Class log does not exist ...
This question显示这是因为在 Bootstrap 早期发生的错误,并尝试在记录器注册之前记录错误。
我似乎不知道从哪里开始调试,因为这是我得到的唯一调用堆栈:
PHP Fatal error: Uncaught ReflectionException: Class log does not exist in /PATH/TO/PROJECT/vendor/laravel/framework/src/Illuminate/Container/Container.php:734
Stack trace:
#0 /PATH/TO/PROJECT/vendor/laravel/framework/src/Illuminate/Container/Container.php(734): ReflectionClass->__construct('log')
#1 /PATH/TO/PROJECT/vendor/laravel/framework/src/Illuminate/Container/Container.php(629): Illuminate\Container\Container->build('log', Array)
#2 /PATH/TO/PROJECT/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(697): Illuminate\Container\Container->make('log', Array)
#3 /PATH/TO/PROJECT/vendor/laravel/framework/src/Illuminate/Container/Container.php(849): Illuminate\Foundation\Application->make('log')
#4 /PATH/TO/PROJECT/vendor/laravel/framework/src/Illuminate/Container/Container.php(804): Illuminate\Container\Container->resolveClass(Object(ReflectionParameter))
#5 /PATH/TO/PROJECT/vendor/laravel/framework/src/Illuminate/Container/Container.php(773): Illuminate\Container\Container in /PATH/TO/PROJECT/vendor/laravel/framework/src/Illuminate/Container/Container.php on line 734
我怀疑它可能与权限有关,但 crontab 与手动运行它的同一用户相关联。是什么导致了原始错误?
最佳答案
我已经找到了导致我的错误的具体原因(对于其他人来说可能会/可能不会有所不同)。在调试了许多源文件后,我发现问题的根源是未加载 PDO 扩展。我不知道为什么只有在作为 cron-job 运行时才会出现这种情况。
请注意:似乎其他有相同问题的人经常在配置阶段遇到它,因此如果您遇到相同的异常,从那里开始调试可能是个好主意。
关于php - (CentOS 6)通过crontab运行Artisan命令导致Reflection异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39174358/