source

Mac OSX에서 PHP 버전을 쉽게 전환할 수 있는 방법은 무엇입니까?

manysource 2022. 10. 15. 10:00

Mac OSX에서 PHP 버전을 쉽게 전환할 수 있는 방법은 무엇입니까?

PHP 5.3에서 PHP 7.0까지 애플리케이션을 테스트하고 싶습니다.

버전 설치 장소와 방법 및 작은 스크립트를 실행하여 버전을 전환하려면 어떻게 해야 합니까?

두 버전의 PHP가 모두 설치되어 있는 경우 를 사용하여 버전 간에 전환할 수 있습니다.link그리고.unlink brew명령어를 지정합니다.

예를 들어 PHP 7.4와 PHP 7.3 사이에서 전환하려면

brew unlink php@7.4
brew link php@7.3

PS: 두 버전의 PHP가 설치되어 있기 때문에 이러한 명령어가 동작합니다.

OSX에 php 버전을 설치하고 전환하는 방법에 대한 매우 좋은 튜토리얼을 발견했습니다.

버전 전환이 가능합니다.

$ sphp 7.0 => PHP 7.0
$ sphp 7.3 => PHP 7.3
$ sphp 7.4 => PHP 7.4

바로 내가 원하는 거야!

예: php 7.4에서 7.3으로 전환합니다.

brew unlink php@7.4
brew install php@7.3
brew link php@7.3

구하면Warning: php@7.3 is keg-only and must be linked with --force다음으로 시험해 보겠습니다.

brew link php@7.3 --force

사용.brew

현재 버전 표시

$ php -v

다른 버전으로 변경
(예를 들어 5.5.x에서 버전 7.0.199로 변경):

$ brew unlink php55
$ brew install php70

저는 지금 다른 버전으로 작업 중이라 전환기 아이디어가 마음에 들었기 때문에 당신이 필요한 것은

   brew install brew-php-switcher

그리고나서brew-php-switcher version

예를들면brew-php-switcher 7.4

PHP를 homebrew와 함께 설치하면 버전을 쉽게 전환할 수 있습니다.갖고 싶다고 말해php56버전 5.6.17을 가리키려면 다음 작업을 수행합니다.

brew switch php56 5.6.17

unlink 및 link php 버전은 apache(httpd)와 함께 사용하는 경우가 많기 때문에 php 버전 전환 후 httpd.conf를 업데이트해야 합니다.

사용 안 함/사용을 위한 쓰기 셸 스크립트가 있습니다.php_module자동적으로 내부로httpd.conf, https://github.com/dangquangthai/switch-php-version-on-mac-sierra/blob/master/switch-php#L46 에서 행 46 ~ 행 54 를 참조해 주세요.

다음 절차를 따릅니다.

1) 설치된 php 버전을 brew별로 확인하고 모든 것이 정상인지 확인합니다.

> brew list | grep php
#output
php56
php56-intl
php56-mcrypt
php71
php71-intl
php71-mcrypt

2) 스크립트 실행

> switch-php 71 # or switch-php 56
#output
PHP version [71] found
Switching from [php56] to [php71] ... 
Unlink php56 ... [OK] and Link php71 ... [OK]
Updating Apache2.4 Configuration /usr/local/etc/httpd/httpd.conf ... [OK]
Restarting Apache2.4 ... [OK]
PHP 7.1.11 (cli) (built: Nov  3 2017 08:48:02) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

3) 마지막으로 위의 메시지가 뜨면httpd.conf노트북:

vi /usr/local/etc/httpd/httpd.conf

Load Module 행으로 확인할 수 있습니다.

LoadModule php7_module /usr/local/Cellar/php71/7.1.11_22/libexec/apache2/libphp7.so
#LoadModule php5_module /usr/local/Cellar/php56/5.6.32_8/libexec/apache2/libphp5.so

4) httpd://localhost/info.httpd를 엽니다.

도움이 되었으면 좋겠다

방법:

  • 설치된 PHP 버전 찾기
  • 기본 PHP 패키지에서 버전화된 패키지로 전환
% brew search php
brew-php-switcher   php-cs-fixer        php@7.3             phplint             phpstan             pup
php ✔               php-cs-fixer@2      php@7.4 ✔           phpmd               phpunit
php-code-sniffer    php@7.2             phpbrew             phpmyadmin          pcp

% brew unlink php
% brew link php@7.4
brew link --overwrite php@7.3

저에게 딱 맞습니다:-)

홈브루를 사용하는 경우 여러 버전의 수식을 설치할 수 있습니다.이런 이유로,

  1. brew unlink수식의 버전을 사용에서 분리하기 위해 사용합니다.
  2. brew link는 수식의 버전을 사용법에 부가하기 위해 사용됩니다.

예를 들어 php 7.4와 8.0이 모두 설치되어 있고 현재 7.4를 사용하고 있다고 가정하여 둘 사이를 전환하고 싶다면 다음과 같이 할 수 있습니다.

brew unlink php@7.4

brew link php@8.0

nano ~/.zshrc가 있는 행을 모두 삭제합니다.

그 후 동작합니다: brew unlink php@7.4 & brew link php@8.0

로컬 시스템에 최신 버전의 php를 설치하고 homebrew를 사용하여 이전 버전으로 전환한 경우 다음 명령을 실행합니다.여기서 7.4로 전환합니다.

brew unlink php
brew install php@7.4
brew link php@7.4

하기 쉬운 곳에 하는 것이 .$ phpbrew install 8.1.3 +default 스위치스위치)phpbrew switch 8.1.3 버전입니다를 참조해 주세요.

https://github.com/phpbrew/phpbrew

오래된 질문이지만 2022년에 php 버전 간에 빠르게 전환하는 방법은 여전히 어렵습니다.저는 Laravel 발렛을 사용하고 있는데, PHP 버전을 바꾸려면 발렛을 다시 설치해야 합니다.기본적으로 .zhsrc 파일에는 2개의 커스텀 함수가 정의되어 있습니다만, 이것은 bash에도 유효하다고 생각합니다.


switchphp7() {
    valet stop
    brew unlink php@8.1
    brew services stop php@8.1
    brew link --force --overwrite php@7.4
    brew services start php@7.4
    composer global update
    rm -f ~/.config/valet/valet.sock
    valet install
    valet start
}


switchphp8() {
    valet stop
    brew unlink php@7.4
    brew services stop php@7.4
    brew link --force --overwrite php@8.1
    brew services start php@8.1
    composer global update
    rm -f ~/.config/valet/valet.sock
    valet install
    valet start
}

그런 다음 명령줄에서 실행합니다.

switchphp8

이 방법은 안정적이지만 Valets 가상 SSL 증명서를 사용하는 경우 명령줄에서 링크된 모든 SSL 증명서에 대해 admin 계정 비밀번호를 입력하도록 요구됩니다.이러한 증명서가 로딩되어 있으면 번거로울 수 있습니다.계속 물어보면 버그가 아니고, 패스워드를 계속 입력하거나 터치 ID를 사용하면 결국 모두 허용됩니다.

저의 목적은 MacOS에 php@7.4.24의 오래된 패치를 설치하는 것이었습니다.이렇게 했습니다.

필요한 오래된 php 패치가 포함된 brew 리비전을 찾아서 git을 리셋했습니다.

저장소: https://github.com/Homebrew/homebrew-core/commit/3b342c146da0452d71d982324977567960da2979

git -C $(brew --repo)/Library/Taps/homebrew/homebrew-core reset --hard 3b09794

brew reinstall php@7.4 

언급URL : https://stackoverflow.com/questions/34909101/how-can-i-easily-switch-between-php-versions-on-mac-osx