소프트웨어 컬렉션의 최신 PHP 버전을 사용하여 Drupal의 drush cron 작업을 실행하세요.

소프트웨어 컬렉션의 최신 PHP 버전을 사용하여 Drupal의 drush cron 작업을 실행하세요.

drush서버에 소프트웨어 컬렉션에서 최신 PHP 버전이 설치되어 있는 경우 Drupal의 cron 작업을 어떻게 실행합니까?

서버는 PHP 5.4와 함께 제공되는 Scientific Linux 7을 실행하고 있지만 rh-php71Software Collections 패키지를 사용하여 PHP 7.1이 필요하고 설치했습니다. Apache와 Drupal은 PHP 7.1에서 잘 작동하지만, crontab에 drush cron 작업을 추가하고 이 작업을 수행할 때 drush가 최신 버전의 PHP를 사용하는지 확인해야 합니다. 만약을 대비해 drush(drush 8.1.10이 설치되어 있음)가 기본 PHP 5.4에서 실행되는지 테스트했지만, cron 작업은 당연히 오류와 함께 충돌합니다.

우리는 (일반적으로 시도하는 방식으로) cron 명령을 테스트하려고 합니다.scl 래퍼에서 명령 실행), 루트로 다음 명령을 실행합니다.

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

하지만 실행되지 않고 오류가 반환됩니다.

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

(터미널에서) 추가 테스트를 통해 scl 래퍼 내부의 하위 쉘에서 drush 명령을 성공적으로 실행할 수 있음이 나타났습니다.

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

crontab에서 "한 줄짜리"와 같은 필수 drush 명령을 실행할 수 있는 방법이 있습니까? 아니면 위 명령이 포함된 별도의 셸 스크립트를 만들고 대신 cron 작업 명령이라고 부르는 것 외에는 선택의 여지가 없습니까?

(나도 이런 질문을 했었다.드루팔SE, 이는 Drupal 문제라기보다는 Linux 문제처럼 보이지만 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 명령이 성공적으로 실행됩니다.

관련 정보