如何在Drupal 8上通过crontab运行Drush命令

问题描述

我试图通过crontab为Drupal 8站点执行drush命令。当我直接调用它们时,这些命令有效,但是当通过用户的crontab运行时,出现以下错误

\ Drupal :: $ container尚未初始化。 \ Drupal :: setContainer()必须为
一个真实的容器调用

其他帖子表明,这是旧版Drush中的错误,但我使用的是10.3.5。

在过去的几个小时中,我已经尝试了许多方法包括重新配置cron,但是最终看来Drush无法正确引导Drupal,但是我需要能够从cron运行队列

这是我正在运行的测试命令,只会添加到Drupal日志中...

crontab(我的用户

* * * * * /var/www/html/vendor/bin/drush scr /var/www/html/scripts/what.PHP -r /var/www/html/web

what.PHP

<?PHP
\Drupal::logger('mymod')->info("CHECKING IN FROM CRON CLI...");

这是另一个命令,与我要完成的操作更接近... crontab(我的用户

* * * * * /var/www/html/vendor/bin/drush queue:run commerce_recurring -r /var/www/html/web >> /var/www/html/private/logs/cron_commerce_recurring.log

在这里遇到的错误是:

找不到命令队列:运行。 Drush无法查询数据库。作为
结果,许多命令不可用。使用--debug
重新运行命令 查看相关的日志消息。

在drupal控制台上运行此命令时,我也遇到同样的错误

任何建议表示赞赏。

谢谢。

解决方法

事实证明这是数据库连接问题。棘手的部分是要得到错误。我必须安装MTA,以便cron可以将错误写入本地用户的邮箱,然后添加--debug选项,以便可以看到真正的错误。

我正在处理DDEV实例,由于某种原因未加载DDEV设置。另一天的问题...