Php7

使用 Software Collections 中較新的 PHP 版本執行 Drupal 的 drush cron 作業

  • May 7, 2019

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 作業會因錯誤而崩潰,這是可以理解的。

我們嘗試通過以 root 身份執行以下命令來測試 cron 命令(以您通常嘗試在 scl 包裝器中執行命令的方式):

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 中像“單線”一樣執行必要的 drush 命令,還是我別無選擇,只能創建一個包含上述命令的單獨 shell 腳本,並將其稱為 cron代替作業命令?

(我也在Drupal.SE上問過這個問題,雖然這似乎更像是一個 Linux 問題而不是 Drupal 問題,但在 Unix.SE 上沒有任何回應。)

在閱讀了軟體集合指南的更多技術部分後,事實證明,當嘗試執行在包裝器中包含參數的命令scl時,您需要將命令用單引號引起來,或者用兩個減號將其與行的包裝器部分分開跡象:

如果您正在執行具有多個參數的命令,請記住將命令及其參數括在引號中:

scl action software_collection_1 software_collection_2 'command --argument'

或者,使用 – 命令分隔符執行帶有多個參數的命令:

scl action software_collection_1 software_collection_2 -- command --argument

我的 drush 命令現在執行成功。

引用自:https://unix.stackexchange.com/questions/517404