Homebrew로 여러 버전의 PHP 관리

8835 단어 homebrewphpmacos
Homebrew을 사용하면 MacOS에 여러 버전의 PHP를 간편하게 설치할 수 있습니다. 예를 들어, php 7.4와 8.0을 모두 설치하려면 brew install 명령을 사용하십시오.

먼저 다음과 같이 7.4 버전을 설치합니다.

% brew install [email protected]


Homebrew를 사용하여 패키지의 특정 버전을 지정하는 구문은 brew install <packageName>@<version> 입니다. 이 경우 패키지 이름은 php이고 버전은 7.4입니다(이 글을 쓰는 시점에서 기본값은 7.4.32). @<version> 부분을 완전히 생략하면 Homebrew는 사용 가능한 최신 버전(이 글을 쓰는 시점에서 8.1)을 설치합니다.
php의 버전 7.4가 올바르게 설치되었는지 확인하려면:

% /opt/homebrew/opt/[email protected]/bin/php -v  
  PHP 7.4.32 (cli) (built: Sep 29 2022 10:45:51) ( NTS )
  Copyright (c) The PHP Group
  Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.32, Copyright (c), by Zend Technologies


이상적으로는 명령줄에서 /opt/homebrew/opt/[email protected]/bin/php를 단순히 php로 참조하고 싶습니다. 여기에는 다른 단계가 필요합니다.

% brew link --force --overwrite [email protected]
  Linking /opt/homebrew/Cellar/[email protected]/7.4.32... 812 symlinks created.

  If you need to have this software first in your PATH instead consider running:
  echo 'export PATH="/opt/homebrew/opt/[email protected]/bin:$PATH"' >> ~/.zshrc
  echo 'export PATH="/opt/homebrew/opt/[email protected]/sbin:$PATH"' >> ~/.zshrc

brew link를 실행한 결과 이제 php 경로에서 /opt/homebrew/bin/php의 연결된 버전을 찾을 수 있습니다.

% ls -l /opt/homebrew/bin/php
  lrwxr-xr-x  1 myuser  admin  32 15 Oct 18:34 /opt/homebrew/bin/php -> ../Cellar/[email protected]/7.4.32/bin/php
% /opt/homebrew/bin/php -v
  PHP 7.4.32 (cli) (built: Sep 29 2022 10:45:51) ( NTS )
  Copyright (c) The PHP Group
  Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.32, Copyright (c), by Zend Technologies


실행 중brew link의 출력에는 ~/.zshrc 파일의 끝에 두 줄을 추가하여 php를 참조할 때 /opt/homebrew/opt/[email protected]/bin 폴더에서 먼저 찾아야 한다고 터미널에 알려주는 제안이 있습니다. 이 작업을 수행할 수 있지만 brew link 다른 버전의 php로 전환할 때마다 해당 줄을 편집해야 합니다. 대신 약간 수정된 접근 방식을 사용합니다.

% echo 'export PATH="/opt/homebrew/sbin:/opt/homebrew/bin:$PATH"' >> ~/.zshrc
% source ~/.zshrc


이제 터미널은 php를 참조할 때마다 먼저 /opt/homebrew/bin에서 php의 연결된 버전을 찾습니다.

% which php    
  /opt/homebrew/bin/php
% php -v
  PHP 7.4.32 (cli) (built: Sep 29 2022 10:45:51) ( NTS )
  Copyright (c) The PHP Group
  Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.32, Copyright (c), by Zend Technologies


이제 php 버전 7.4가 설치되었으므로 php 버전 8.0도 설치하여 계속할 수 있습니다.

% brew install [email protected]


이제 우리는 brew에게 php의 새 버전에 연결하도록 지시합니다.

% brew link --force --overwrite [email protected]
  Unlinking /opt/homebrew/Cellar/[email protected]/7.4.32... 328 symlinks removed.
  Linking /opt/homebrew/Cellar/[email protected]/8.0.24... 232 symlinks created.


이 명령의 출력에서 ​​명령export PATH...이 포함된 두 개의 명령을 실행하라는 제안을 다시 볼 수 있지만 위에서 수행한 단계로 인해 이 작업이 필요하지 않습니다.

% which php    
  /opt/homebrew/bin/php
% php -v
  PHP 8.0.24 (cli) (built: Sep 30 2022 08:39:20) ( NTS )
  Copyright (c) The PHP Group
  Zend Engine v4.0.24, Copyright (c) Zend Technologies
    with Xdebug v3.1.5, Copyright (c) 2002-2022, by Derick Rethans
    with Zend OPcache v8.0.24, Copyright (c), by Zend Technologies


이제 brew link --force --overwrite [email protected] 또는 brew link --force --overwrite [email protected]와 같이 서로 다시 연결하여 7.4 버전에서 8.0 버전으로 전환할 수 있습니다.

연결할 수 있는 버전이 확실하지 않은 경우 다음 명령을 시도하십시오.

% brew ls --versions | grep '^php[ @]'
  [email protected] 7.4.32
  [email protected] 8.0.24


마지막으로, 아래는 제가 phpswitch라고 부르는 완전한 기능을 갖춘 스크립트의 소스 코드입니다. 이 스크립트는 executable으로 설정한 다음 phpswitch 8.0 또는 phpswitch 7.4 와 같은 터미널에서 실행할 수 있습니다.

#!/bin/bash

if [ $# -ne 1 ]; then
    echo 1>&2 "USAGE: $0 <phpVersion>"
    exit 2
fi

INSTALLED_VERSIONS=`find /opt/homebrew/opt | grep 'php@' | sed 's/\/opt\/homebrew\/opt\/php@//'`

if [[ ! -f /opt/homebrew/opt/php@${1}/bin/php ]]; then
    echo 1>&2 "/opt/homebrew/opt/php@${1}/bin/php was not found"
    printf 'valid options:\n%s\n' "${INSTALLED_VERSIONS[*]}"
    exit 2
fi

for VERSION in ${INSTALLED_VERSIONS[*]}; do
    brew unlink php@$VERSION > /dev/null 2>&1
    brew services stop php@$VERSION > /dev/null 2>&1
done

brew link --force --overwrite php@$1 > /dev/null 2>&1
brew services start php@$1 > /dev/null 2>&1

좋은 웹페이지 즐겨찾기