【问题标题】:(CentOS 6) Running Artisan command through crontab causes Reflection exception(CentOS 6) 通过 crontab 运行 Artisan 命令导致 Reflection 异常
【发布时间】:2017-01-03 14:27:14
【问题描述】:

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

【问题讨论】:

  • 您是否尝试手动运行“php artisan schedule:run”(不使用 CRON)?你得到同样的错误吗? |编辑:也可能相关stackoverflow.com/a/34992628/3551175
  • 我在原始帖子中链接到该问题。异常可能是由不同的错误引起的,这些错误触发框架尝试记录它,因为 Laravel Log 类已注册。

标签: php linux laravel cron centos


【解决方案1】:

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

请注意:其他有相同问题的人似乎经常在配置阶段遇到此问题,因此如果您遇到相同的异常,最好从那里开始调试。

【讨论】:

    猜你喜欢
    • 2019-10-26
    • 2020-09-10
    • 2020-08-16
    • 2015-07-25
    • 1970-01-01
    • 2018-07-01
    • 2019-10-16
    • 2021-09-30
    • 1970-01-01
    相关资源
    最近更新 更多