如何在 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 命令的主要内容,如果未能解决你的问题,请参考以下文章

Drupal 8 Webform:如何在下一页上显示文本输入?

Drupal 8 如何在子站点上使用不同的主题

通过命令行设置drupal cronjob

如何防止文章标题成为 Drupal 8 中的链接

无法通过 Drupal 8 发送电子邮件

通过 vue js 将电影图像发布/上传到 drupal 8