서버 운영/APM 서버 구축

Apache와 Shell에서 PHP 버전 전환하기(How to Switch between Multiple PHP Version)

씨실과 날실 2019. 7. 5. 09:00

이 내용은 Apache 서버에 버전이 다른 두 개 이상의 PHP가 이미 설치되어 있음을 전제로 합니다.

PHP 설치 방법은 아래 링크를 참고하시기 바랍니다.

Apache에서 PHP 버전 전환

요약

study@study-VirtualBox:~$ sudo a2dismod php5.6 php7.1 php7.2
study@study-VirtualBox:~$ sudo a2enmod php7.3
study@study-VirtualBox:~$ sudo service apache2 restart

PHP 비활성화 시 출력 화면 예시

study@study-VirtualBox:~$ sudo a2dismod php7.2
Module php7.2 disabled.
To activate the new configuration, you need to run:
  systemctl restart apache2
study@study-VirtualBox:~$

PHP 활성화 시 출력 화면 예시

study@study-VirtualBox:~$ sudo a2enmod php7.3
Considering dependency mpm_prefork for php7.3:
Considering conflict mpm_event for mpm_prefork:
Considering conflict mpm_worker for mpm_prefork:
Module mpm_prefork already enabled
Considering conflict php5 for php7.3:
Enabling module php7.3.
To activate the new configuration, you need to run:
  systemctl restart apache2
study@study-VirtualBox:~$ 


a2dismod는 기존의 활성화되어 있는 패키지를 비활성화하는 명령입니다.

a2enmod는 비활성화되어 있는 패키지를 활성화하는 명령입니다.

위 두 명령을 실행 후 서버에 적용하기 위해서는 아파치 서버를 재실행해주어야 합니다.

Shell에서 PHP 버전 전환

PHP 관련 패키지 위치 확인

study@study-VirtualBox:~$ whereis php
php: /usr/bin/php7.3 /usr/bin/php /usr/bin/php7.2 /usr/lib/php /etc/php /usr/include/php /usr/share/php7.3-xml /usr/share/php7.3-intl /usr/share/php7.2-bz2 /usr/share/php7.2-json /usr/share/php7.2-mbstring /usr/share/php7.2-mysql /usr/share/php7.3-readline /usr/share/php /usr/share/php7.3-bz2 /usr/share/php7.2-common /usr/share/php7.3-mbstring /usr/share/php7.3-opcache /usr/share/php7.2-xml /usr/share/php7.3-zip /usr/share/php7.3-curl /usr/share/php7.3-common /usr/share/php7.3-xmlrpc /usr/share/php7.2-gd /usr/share/php7.3-bcmath /usr/share/php7.2-readline /usr/share/php7.3-mysql /usr/share/php7.2-zip /usr/share/php7.3-json /usr/share/php7.3-gmp /usr/share/php7.2-curl /usr/share/php7.3-gd /usr/share/php7.2-intl /usr/share/php7.2-opcache /opt/lampp/bin/php /usr/share/man/man1/php.1.gz
study@study-VirtualBox:~$ 


study@study-VirtualBox:~$ whereis php
php: /usr/bin/php7.3 /usr/bin/php /usr/bin/php7.2 /usr/lib/php /etc/php /usr/include/php /usr/share/php7.3-xml /usr/share/php7.3-intl /usr/share/php7.2-bz2 /usr/share/php7.2-json /usr/share/php7.2-mbstring /usr/share/php7.2-mysql /usr/share/php7.3-readline /usr/share/php /usr/share/php7.3-bz2 /usr/share/php7.2-common /usr/share/php7.3-mbstring /usr/share/php7.3-opcache /usr/share/php7.2-xml /usr/share/php7.3-zip /usr/share/php7.3-curl /usr/share/php7.3-common /usr/share/php7.3-xmlrpc /usr/share/php7.2-gd /usr/share/php7.3-bcmath /usr/share/php7.2-readline /usr/share/php7.3-mysql /usr/share/php7.2-zip /usr/share/php7.3-json /usr/share/php7.3-gmp /usr/share/php7.2-curl /usr/share/php7.3-gd /usr/share/php7.2-intl /usr/share/php7.2-opcache /opt/lampp/bin/php /usr/share/man/man1/php.1.gz
study@study-VirtualBox:~$


설치 PHP 버전 확인

study@study-VirtualBox:~$ update-alternatives --list php
/usr/bin/php7.2
/usr/bin/php7.3
study@study-VirtualBox:~$ 

PHP 정보 상세 보기

study@study-VirtualBox:~$ sudo update-alternatives --display php
php - 자동 모드
  link best version is /usr/bin/php7.3
 링크가 현재 /usr/bin/php7.3 가리킴
  link php is /usr/bin/php
  slave php.1.gz is /usr/share/man/man1/php.1.gz
/usr/bin/php7.2 - 우선순위 72
  슬레이브 php.1.gz: /usr/share/man/man1/php7.2.1.gz
/usr/bin/php7.3 - 우선순위 73
  슬레이브 php.1.gz: /usr/share/man/man1/php7.3.1.gz
study@study-VirtualBox:~$ 

update-alternatives로 php 기본 패키지 변경

update-alternatives는 특정 패키지의 여러 버전을 관리할 수 있도록 해주는 명령입니다.

활성 php를 7.2에서 7.3으로 바꾸려면 관련 패키지들도 그에 맞추어 활성화해주어야 합니다.

update-alternatives --set

 study@study-VirtualBox:~$ sudo update-alternatives --set php /usr/bin/php7.3 && \
> sudo update-alternatives --set phar /usr/bin/phar7.3 && \
> sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.3
study@study-VirtualBox:~$ 
php7.3-dev 패키지가 설치되어 있는 경우 아래의 명령을 추가로 실행해주시면 됩니다.
study@study-VirtualBox:~$ sudo update-alternatives --set phpize /usr/bin/phpize7.3 && \
sudo update-alternatives --set php-config /usr/bin/php-config7.3

이것들은 pecl를 이용하여 php 모듈을 컴파일하는데 보다 유용합니다.

sudo update-alternatives --config php

sudo update-alternatives --set을 이용해 일일이 지정하는 대신 번호를 선택하여 php 버전을 지정하는 방법도 있습니다.

study@study-VirtualBox:~$ sudo update-alternatives --config php
[sudo] study의 암호: 
대체 항목 php에 대해 (/usr/bin/php 제공) 2개 선택이 있습니다.

  선택       경로           우선순� 상태
------------------------------------------------------------
* 0            /usr/bin/php7.3   73        자동 모드
  1            /usr/bin/php7.2   72        수동 모드
  2            /usr/bin/php7.3   73        수동 모드

Press  to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/bin/php7.2 to provide /usr/bin/php (php) in manual mode
study@study-VirtualBox:~$ 
위 예에서는 PHP7.3에서 다시 수동으로 PHP7.2로 전환한 것입니다.

물론 php7.3을 쓰려면 해당 번호를 선택해주셔야 합니다.