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

标签 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显示这是因为在 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/

相关文章:

php - 从 whereIn 获取重复项 - Laravel

php - SQLSTATE[42S22] : Column not found: 1054 Unknown column (Seems to be trying to use ID as column name)

php - 向用户推荐还不是 friend 的 friend

PHP fwrite() 期望参数 1 是资源,给定 bool 值

php - UNION 与 UNION ALL 的性能对比

linux - 如何在linux中将net-snmp默认端口更改为比1024小1?

linux - Arch Linux gdb 立即崩溃

javascript - SQL 更新使用 Datepicker.js 将日期重置为 0000-00-00

java - MYSQL在linux平台不返回结果,在windows下

php - 更改 session 中的值并保存。拉维尔