Ubuntu - 특정 디렉토리에는 항상 특정 PHP 버전을 사용합니다.

Ubuntu - 특정 디렉토리에는 항상 특정 PHP 버전을 사용합니다.

여러 개의 PHP(8.1 및 7.3)가 있습니다. 이것을 실행하면 php -v7.3이 됩니다.

예를 들어 magento 2에서는 PHP를 사용하여 일부 명령을 실행해야 php bin/magento cache:flush하지만 php 8.1(/var/www/회사php8.1 bin/magento cache:flush) 하지만 예를 들어 작동시키기 위해 항상 PHP 8 바이너리를 지정해야 하는 것은 원하지 않습니다 .

해당 특정 디렉토리에 있는 경우 항상 PHP 8.1을 사용하도록 하는 방법이 있습니까?

답변1

이는 쉘에서 사용할 수 있는 빠르고 더러운 래퍼 함수입니다. 예를 들면 sh다음과 같습니다 bash.

php () (
   case "$PWD/" in
      /var/www/company/ ) c=php8.1 ;;
      *                 ) c=php    ;;
   esac
   exec "$c" "$@"
)

이제 실행하기에 충분하며 php whatever …그에 따라 하나 또는 다른 실행 파일이 선택됩니다. php -v다른 곳에서 시도하여 이를 확인할 수 있습니다 /var/www/company.

노트:

  • /var/www/company/*로 대체 할 수도 있습니다 /var/www/company/.
  • $PWDpwd -L인쇄하려는 내용을 저장합니다 (시작 부분 참조).이 답변). 뭔가를 인쇄 하고 싶을 수도 있습니다 pwd -P. 그렇다면 를 사용하세요 case "$(pwd -P)/" in.
  • 전체 함수는 서브셸에서 실행되므로 "로컬"이며 이식 c할 수 없는 기능이 없습니다 local c. 결국 서브셸 php은 .php8.1exec

관련 정보