PHP 멀티버전(여러개의 버전)을 Shell 에서 자유롭게 사용하기
앞서 nginX를 이용해서 웹 서버나 웹 서비스에서 여러개의 PHP 버전을 활용하는 방법을 알아봤습니다. 웹 서비스에서는 fastCGI인 php-fpm을 이용하기 때문에 웹 서비스가 실행할때 여러 버전의 PHP를 쉽게 실행할 수 있었는데요 콘솔이나 서버에서 Shell의 커맨드라인 상태에서 쉽게 여러가지 PHP 버전을 사용하는 방법을 알아보겠습니다.
nginX에서 PHP 7, PHP 5 두개 이상의 여러버전을 함께 사용하기 – 아칼과 줄리 : 사랑은 멈추지 않는다 | |
Source: akal.co.kr/?p=1549 |
nginX에서 여러버전의 PHP를 구동하고 싶으신 분은 이 포스팅을 참고해주세요.
사실, 이 방법은 PHP뿐만이 아니라 다른 여러개의 패키지 버전을 관리하는 방법으로 바로 update-alternatives를 사용하는 것입니다. Java라던지 python도 이런 방법으로 버전 관리가 가능합니다.
리눅스 배포본에 따라 한글로 나오지 않을수도 있습니다.
먼저 PHP의 위치를 파악하는게 좋겠네요.
~ $ whereis php php: /usr/bin/php7.1 /usr/bin/php /etc/php /usr/lib/php /usr/bin/X11/php7.1 /usr/bin/X11/php /usr/share/php7.1-xml /usr/share/php7.1-opcache /usr/share/php7.1-zip /usr/share/php7.1-common /usr/share/php7.1-mbstring /usr/share/php7.1-mysql /usr/share/php7.1-gd /usr/share/php7.1-readline /usr/share/php7.1-json /usr/share/php7.1-curl /usr/share/php /usr/share/man/man1/php.1.gz
/usr/bin 디렉토리에 여러 버전의 PHP가 존재 하는 것을 알수 있습니다.
사실 whereis 명령어보다 update-alternatives에서 더 좋은 명령옵션을 제공하고 있습니다. 복잡하게 모조리 던져주는 위의 명령어보다 –list 옵션을 통해 어떤 버전의 패키지가 있는지 정확히 리스트를 확인합니다.
~ $ update-alternatives --list php /usr/bin/php5 /usr/bin/php7.1
php5 버전과 php7.1 버전 두개의 패키지가 설치되어 있음을 알 수 있습니다.
좀더 자세한 정보를 보고 싶다면 아래의 명령어를 입력합니다.
~ $ sudo update-alternatives --display php php - 수동 모드 링크가 현재 /usr/bin/php5 가리킴 /usr/bin/php5 - 우선순위 50 슬레이브 php.1.gz: /usr/share/man/man1/php5.1.gz /usr/bin/php7.1 - 우선순위 71 슬레이브 php.1.gz: /usr/share/man/man1/php7.1.1.gz 현재 가장 '좋은' 버전은 '/usr/bin/php7.1'입니다. ~ $ php -v PHP 5.5.9 Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
링크가 현재 /usr/bin/php5 가리킴 이말은 default로 시스템에 php5가 적용된다는 말입니다. best version 은 7.1이라고 나오네요. 그래서 php -v 로 버전을 확인해봤더니 php 5.5.9가 작동하고 있다고 나옵니다.
자 그럼 이제 php7.1 이 시스템 Shell에서 작동하도록 해보겠습니다. 아래의 명령어를 입력해보세요.
~ $ sudo update-alternatives --set php /usr/bin/php7.1 update-alternatives: using /usr/bin/php7.1 to provide /usr/bin/php (php) in 수동 모드 ~ $ php -v PHP 7.1 Copyright (c) 1997-2018 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.1.16-1+ubuntu14.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
php7.1 로 적용된게 보이시죠 ? 이제부터 Shell 에서 php7.1을 사용하실수 있습니다.
~ $ sudo update-alternatives --set php /usr/bin/php5 update-alternatives: using /usr/bin/php5 to provide /usr/bin/php (php) in 수동 모드 ~ $ php -v PHP 5.5.9 Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
물론 다시 php5로 전환해서 사용할수 있습니다.
혹은 다음과 같은 명령어로도 설정을 전환할 수 있습니다.
~ $ sudo update-alternatives --config php 대체 항목 php에 대해 (/usr/bin/php 제공) 2개 선택이 있습니다. 선택 경로 우선순▒ 상태 ------------------------------------------------------------ 0 /usr/bin/php7.1 71 자동 모드 * 1 /usr/bin/php5 50 수동 모드 2 /usr/bin/php7.1 71 수동 모드 기본 사항[*]을 사용하려면 엔터, 다른 것을 사용하려면 번호를 입력하십시오: ■
1 혹은 2를 골라서 엔터를 입력하면 php 버전을 골라서 설정할 수 있습니다.
전체 시스템에서는 php5를 사용하고 있지만 특정 사용자 계정에서는 php7.1을 shell에서 동작하게 하려면 어떻게 해야 할까요 ?
일반적으로 우분투 계열은 bash를 shell로 사용하고 있기 때문에 사용자의 홈디렉토리 안에 .bash_profile을 생성 혹은 추가해서 다음과 같은 내용을 넣어주세요.
alias php='/usr/bin/php7.1'
이제 수정된 .bash_profile 을 실행시킵니다.
~ $ . ~/.bash_profile
sudo php -v, php -v 명령어에 따라 다른 버전의 PHP가 작동되는게 보이실 겁니다. 시스템 전반에는 PHP5가 기본으로, 특정계정에서는 PHP7.1이 작동하도록 설정해 보았습니다.
~ $ sudo php -v PHP 5.5.9 Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies ~ $ php -v PHP 7.1 Copyright (c) 1997-2018 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.1.16-1+ubuntu14.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
이제 Shell 에서도 쉽게 PHP 버전을 설정하면서 사용하세요.