여러 개의 PHP(8.1 및 7.3)가 있습니다. 이것을 실행하면 php -v
7.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/
.$PWD
pwd -L
인쇄하려는 내용을 저장합니다 (시작 부분 참조).이 답변). 뭔가를 인쇄 하고 싶을 수도 있습니다pwd -P
. 그렇다면 를 사용하세요case "$(pwd -P)/" in
.- 전체 함수는 서브셸에서 실행되므로 "로컬"이며 이식
c
할 수 없는 기능이 없습니다local c
. 결국 서브셸php
은 .php8.1
exec