使用 Software Collections 中的较新 PHP 版本运行 Drupal 的 drush cron 作业

使用 Software Collections 中的较新 PHP 版本运行 Drupal 的 drush cron 作业

drush当您的服务器从 Software Collections 安装了较新的 PHP 版本时,如何运行 Drupal 的cron 作业?

服务器运行的是 Scientific Linux 7,它附带 PHP 5.4,但我们需要并且已经使用 Software Collectionsrh-php71包安装了 PHP 7.1。 Apache 以及 Drupal 可以与 PHP 7.1 配合良好,但我们还需要将 drush cron 作业添加到我们的 crontab 中,并确保 drush 在执行此操作时使用的是较新版本的 PHP。我们已经测试了 drush(我们安装了 drush 8.1.10)是否可以使用默认的 PHP 5.4 运行,以防万一,但是 cron 作业会因错误而崩溃,这是可以理解的。

我们尝试测试 cron 命令(以您通常尝试的方式)在 scl 包装器中运行命令),以 root 身份运行以下命令:

scl enable rh-php71 drush cron -r /data/webs/www/siteroot

但这不会运行,返回错误:

Unable to open /etc/scl/conf/drush!

进一步的测试(在终端中)表明我们可以在 scl 包装器内的子 shell 中成功运行 drush 命令:

scl enable rh-php71 bash
drush cron -r /data/webs/www/siteroot
exit

有什么方法可以让我们像 crontab 中的“one-liner”一样运行必要的 drush 命令,或者我别无选择,只能创建一个包含上述命令的单独 shell 脚本,并将其称为 cron作业命令代替?

(我也问过这个问题DrupalSE,尽管这看起来更像是一个 Linux 问题,而不是 Drupal 问题,因为在 Unix.SE 上没有得到回应。)

答案1

看完之后软件集合指南的更多技术部分事实证明,当尝试运行有参数的命令scl包装器中,您需要将命令用单引号引起来,或者用两个减号将其与行的包装器部分分开:

如果您运行带有多个参数的命令,请记住将命令及其参数括在引号中:

scl action software_collection_1 software_collection_2 'command --argument'

或者,使用 -- 命令分隔符运行带有多个参数的命令:

scl action software_collection_1 software_collection_2 -- command --argument

我的 drush 命令现在成功运行了。

相关内容