如何在 Drupal 8 上通过 crontab 运行 Drush 命令
Posted
技术标签:
【中文标题】如何在 Drupal 8 上通过 crontab 运行 Drush 命令【英文标题】:How do you run Drush commands via crontab on Drupal 8 【发布时间】:2021-02-22 00:51:26 【问题描述】:我正在尝试通过 Drupal 8 站点的 crontab 执行 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
什么.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 控制台运行此命令时出现同样的错误。
任何建议表示赞赏。
谢谢。
【问题讨论】:
-r 是 --root 的简写。 【参考方案1】:这原来是一个数据库连接问题。棘手的部分是解决错误。我必须安装一个 MTA,以便 cron 可以将错误写入本地用户的邮箱,然后添加 --debug 选项,这样我才能看到真正的错误。
我正在处理一个 DDEV 实例,但由于某种原因,没有加载 DDEV 设置。改天的问题...
【讨论】:
以上是关于如何在 Drupal 8 上通过 crontab 运行 Drush 命令的主要内容,如果未能解决你的问题,请参考以下文章