티스토리 뷰

프로젝트별 node version 자동관리에 이어서 이번엔 php 해보려고 한다.

 

조건 

- docker 사용자라면 필요가 없다.

- valetphp mon 사용자

- composer 사용자 ( shell script 에서 해당  프로젝트의 php 버전을 composer.json 에서 불러온다 )

- zsh 사용자 (shell script를 수정하면 가능할 것 같은데 이번글 zsh 기준으로 작성되어 있다.

- mac 사용자

 

준비단계

- brew 와 zsh 이 이미 설치되어 있다는 조건하에 시작하게습니다.

1. brew 에서 jq 를 설치합니다 나중에 만들어질 shell script 에서 해석용도로 사용됩니다.

# jq instsall
brew instsll jq

 

2. php mon의 환경 변수 등록 ( php mon의 환경변수가 없어도 작동 되는데 지장이 없기에 많은 분들이 생략하는 부분)

# phpmon 환경변수 추가 (자신의 상황에 맞게 수정한다 그러나 대부분 맞음)
export PATH=$HOME/.config/phpmon/bin:$PATH

 

3. shell script 작성

autoload -U add-zsh-hook
change-php-version() {
  if [ -f composer.json ]; then
    PHPVERSION=$(cat composer.json | jq '.require.php' | grep -o '[0-9].[0-9]')
    NOWVERSION=$(php -v | grep -o '[0-9].[0-9]' | head -n 1)
    if [ "$PHPVERSION" != $NOWVERSION ]; then
    SWITCHVERSION=$(echo $PHPVERSION | sed -e "s/\.//g")
      . pm$SWITCHVERSION
    fi
  fi
}

add-zsh-hook chpwd change-php-version
  • 설명 
    • 프로젝트에 진입했을 때 composer.json 파일이 있는 경우 작동 된다.
    • composer.json 파일에서 require 부분을 불러와 프로젝트의 php 버전을 확인하여 PHPVERSION 변수에 담음
    • php -v 명령어를 통하여 현재 php 버전을 마이너 버전까지만 표시하여 NOWVERSION 변수에 담음
    • 두 버전이 틀리면 아까 등록한 php mon의 환경변수에서 quick 변경 커맨드를 실행시킨다.
    • 해당 method를 zsh hook 에 등록

 

 

4. 작성된 파일을 .zshrc에 등록

# 위에서 만든 파일이 ~/Utils/php/ 폴더에 auto-php.sh 일 경우
source ~/Utils/php/auto-php.sh

 

적용모습

 

 

댓글


최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday