(CentOS 6)通过crontab运行Artisan命令会导致Reflection异常

时间:2016-08-26 20:41:28

标签: php linux laravel cron centos

当我运行命令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表明它是由于在引导过程早期发生的错误,并尝试在记录器注册之前记录错误。

我似乎无法弄清楚从哪里开始调试,因为这是我得到的唯一调用堆栈:

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与手动运行它的同一用户绑定。造成原始错误的原因是什么?

1 个答案:

答案 0 :(得分:0)

我发现了导致我的错误的原因(其他人可能/可能不同)。通过许多源文件调试后,我发现问题的根源是PDO扩展没有被加载。我不知道为什么只有在作为一个cron-job运行时才会出现这种情况。

注意:似乎其他具有相同问题的人经常在配置阶段拥有它,所以如果你得到相同的异常,从那里开始调试可能是个好主意。

相关问题