서버 운영/APM 서버 구축

우분투 18.04에서, php 7.2에서 php 7.3으로 업그레이드하는 방법(+ 설치 방법) (How to upgrade from php 7.2 to 7.3 on Ubuntu)

씨실과 날실 2019. 3. 1. 09:00


[필수 공지]

워드프레스와 미디어위키, 기타 다른 CMS를 설치할 예정이거나 현재 운영 중인 분들은 PHP를 7.3으로 업그레이드할 계획을 갖고 계신 경우, 그 계획을 미루시기 바랍니다.

PHP 7.3과 관련하여 compact(): Undefined variable 이슈를 발견했습니다. 사실 이 이슈는 좀 되었습니다. 그러나 저는 PHP를 최근에 업그레이드하여 최근에서야 알게 되었습니다.

따라서 초심자 분들은 이 글은 참고만 하시고 실제로 적용하시는 것은 미루시기를 권장합니다.

PHP를 7.3으로 업그레이드하거나 새로 설치하실 분들은 해당 이슈에 대하여 자세히 알아보시고 작업을 진행하시기 바랍니다.

자세한 글은 아래 링크를 참고하시기 바랍니다.

2019/03/15 - [IT/가상머신, 서버, CMS 구축] - PHP 7.3으로의 업그레이드 및 사용 연기 권장 안내 - PHP Notice: compact(): Undefined variable:

또한 PHP 7.3 환경에서 미디어위키 1.31.1 LTS 버전을 설치하는 방법에 대해서 글을 올려놓았으니 관심있으신 분은 아래 링크를 참고하시기 바랍니다.

2019/05/26 - [서버 운영/미디어위키(Mediawiki)] - PHP 7.3 환경에서 미디어위키(Mediawiki) 1.31.1 LTS 설치하기 - XAMPP 7.3.4


[작업환경]

가상머신 : VirtualBox 6.0

OS : Ubuntu 18.04.1

Apache2 : Apache/2.4.29 (Ubuntu)

PHP7 : PHP 7.2.15-0ubuntu0.18.04.1

MariaDB : mysql  Ver 15.1 Distrib 10.3.12-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

phpMyAdmin : phpMyAdmin 4.6.6deb5

이번에는 우분투 18.04에서, php 7.2에서 php 7.3으로 업그레이드하는 방법에 대해 알아보도록 하겠습니다.

사실 이번 글을 적게 된 이유는 현재 연재 작업 중인 워드프레스가 5.1로 업그레이드되면서 추천 설치 요구사항 중 php가 7.3 이상으로 상향되었기 때문입니다. 물론 php 버전이 너무 오래된 것만 아니라면 굳이 7.3으로 업그레이드 하지 않더라도 워드프레스를 설치하고 사용하는데 큰 문제는 없을 걸로 생각됩니다만, 일단 워드프레스 측에서 공식적으로 php를 7.3 이상으로 올릴 것을 권장하고 있는 바, php를 업그레이드하는 방법에 대해 안내해드리고자 합니다.

글 맨 앞에 이번 작업의 환경을 적어두었으니 참고하시기 바랍니다. 작업 환경 중 우리가 눙여겨 볼 항목은 우분투와 php입니다.

우분투(Ubuntu) 18.04.1

현재 우분투 18.10이 최신 버전이고 조만간 우분투 19.04도 공개될 예정입니다만 이번 작업을 포함하여 기본 OS로 우분투 18.04를 선택하는 이유는 이 우분투 18.04가 LTS(장기간 지원) 버전이기 때문입니다. 서버의 생명은 바로 안정성입니다. 따라서 장기간 유지보수를 지원하는 OS를 사용함으로써 안정성을 확보하고, 잦은 업데이트로 인한 오류 발생 확률을 최대한 억제하기 위해 이 LTS 지원 버전을 사용합니다.

우분투의 경우, 짝수해 4월에 출시되는 버전이 이 LTS 버전입니다. 따라서 다음 LTS 버전은 2020년 4월에 출시되는 버전이 되겠습니다.

PHP 7.2.15-0ubuntu0.18.04.1

처음 이 블로그에서 연재를 시작했을 때는 우분투 18.04의 저장소를 통해 설치한 php의 버전이 PHP 7.2.10-0ubuntu0.18.04.1였습니다만 이 글을 적는 시점에서 PHP 7.2.15-0ubuntu0.18.04.1로 업그레이드된 상태입니다.

작업 환경 항목 중 이번 글 주제와 관련하여 가장 중요한 부분이 이 항목입니다. 이유는 우분투 18.04의 공식 wj장소와 세계 각지의 복제(미러 -mirror) 저장소들은 hphp를 7.2 버전만 지원합니다. 그 외의 버전은 존재하지 않아 따로 소스파일을 다운받아 컴파일 설치를 하거나, PPA(개인 패키지 저장소)를 통해 설치해주어야 합니다. 이번에는 php 7.2에서 공식 저장소에는 없는 php 7.3으로 업그레이드해야 하므로 PPA를 통한 설치를 이용하고자 합니다.

업그레이드를 하는 것인데 설치라는 단어를 쓰는 이유는 기존의 php 7.2를  7.3으로 파일을완전히 대체하는 것이 아니라, 기존의 것은 그대로 남기고 새 버전을 설치 후 아파치에 연결된 php 버전만 새 버전으로 교체하는 것이기 때문입니다.

그럼 지금부터 php 7.3으로의 업그레이드 방법을 알아보도록 하겠습니다.

사전 작업

먼저 업그레이드 가능한 패키지들을 확인하고 업그레이드 해주도록 합시다.

study@study-VirtualBox:~$ sudo apt update
study@study-VirtualBox:~$ apt list --upgradable
study@study-VirtualBox:~$ sudo apt upgrade
혹시 우분투 부팅 직후 위 업그레이드 명령을 실행하면 가끔 아래와 같은 오류 메시지가 나타나기도 합니다.

study@study-VirtualBox:~$ sudo apt upgrade
E: /var/lib/dpkg/lock-frontend 잠금 파일을 얻을 수 없습니다 - open (11: 자원이 일시적으로 사용 불가능함)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
study@study-VirtualBox:~$ 
이런 경우 이미 우분투가 자동으로 소프트웨어 업데이터를 실행하여 업그레이드 명령 실행에 필요한 자원을 이미 소프트웨어 업데이터가 사용하고 있는 경우가 대부분입니다.

위와 같은 창이 뜨면 나중에 알림 버튼을 눌러 창을 닫고 다시 터미널에서 업글이드 명령을 실행해주시면 됩니다.

물론 터미널을 통한 업그레이드 명령 실행 대신 위 그림처럼 소프트웨어 업데이터를 이용해 패키지 업그레이드를 해도 됩니다만 가능하면 터미널을 이용한 패키지 업데이트를 해주시기 바랍니다.

요즘은 우분투도 많이 안정화되어 소트웨어 업데이터 등 GUI 프로그램을 사용해 패키지 업그레이드를 해도 오류 없이 잘 되는 편이긴 합니다만 보다 안전히 업그레이드하려면 터미널을 이용하시기를 추천드립니다.

현재 php 버전 확인

이제 현재 설치되어 있는 php 버전을 확인해 봅시다.

study@study-VirtualBox:~$ php -v
PHP 7.2.15-0ubuntu0.18.04.1 (cli) (built: Feb  8 2019 14:54:22) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.15-0ubuntu0.18.04.1, Copyright (c) 1999-2018, by Zend Technologies
study@study-VirtualBox:~$

이 글이 적힌 시점에서 웁ㄴ투 공식 ㅈ장소 내 php의 버전은 7.2.15입니다.

현재 사용 중인 php 모듈 목록 확인 및 목록 파일 저장

study@study-VirtualBox:~$ dpkg -l | grep php | tee ~/다운로드/packages.txt

그러면 아래와 같은 방식으로 php로 시작하는 패키지 목록들을 터미널에 보여줍니다. 그리고 해당 내용은 ~/다운로드/packages.txt에 저장되어 있으나 나중에라도 확인할 수 있습니다. 참고로 ~은 현재 우분투에 로그인된 계정의 홈 디렉토리의 약자입니다. ~의 전체 절대 경로는 아래와 같은 식입니다.

~ : /home/우분투 계정 아이디


-예-

~/다운로드/packages.txt = /home/study/다운로드/packages.txt

해당 명령을 실행하면 다음과 같이 php로 시작되는 패키지 목록들이 나옵니다.

study@study-VirtualBox:~$ dpkg -l | grep php | tee ~/다운로드/packages.txt
ii  libapache2-mod-php7.2                      7.2.15-0ubuntu0.18.04.1                      amd64        server-side, HTML-embedded scripting language (Apache 2 module)
ii  php                                        1:7.2+60ubuntu1                              all          server-side, HTML-embedded scripting language (default)
ii  php-apcu                                   5.1.9+4.0.11-1build1                         amd64        APC User Cache for PHP
ii  php-apcu-bc                                1.0.3-2ubuntu2                               amd64        APCu Backwards Compatibility Module
ii  php-bz2                                    1:7.2+60ubuntu1                              all          bzip2 module for PHP [default]
ii  php-cli                                    1:7.2+60ubuntu1                              all          command-line interpreter for the PHP scripting language (default)
ii  php-cli-prompt                             1.0.3+dfsg-1                                 all          tiny helper prompting for user input
ii  php-common                                 1:60ubuntu1                                  all          Common files for PHP packages
ii  php-composer-ca-bundle                     1.1.0-1                                      all          utility library to find a path to the system CA bundle
ii  php-composer-semver                        1.4.2-1                                      all          utilities, version constraint parsing and validation
ii  php-composer-spdx-licenses                 1.3.0-1                                      all          SPDX licenses list and validation library
ii  php-curl                                   1:7.2+60ubuntu1                              all          CURL module for PHP [default]
ii  php-gd                                     1:7.2+60ubuntu1                              all          GD module for PHP [default]
ii  php-intl                                   1:7.2+60ubuntu1                              all          Internationalisation module for PHP [default]
ii  php-json-schema                            5.2.6-1                                      all          implementation of JSON schema
ii  php-mbstring                               1:7.2+60ubuntu1                              all          MBSTRING module for PHP [default]
ii  php-mysql                                  1:7.2+60ubuntu1                              all          MySQL module for PHP [default]
ii  php-pear                                   1:1.10.5+submodules+notgz-1ubuntu1.18.04.1   all          PEAR Base System
ii  php-php-gettext                            1.0.12-0.1                                   all          read gettext MO files directly, without requiring anything other than PHP
ii  php-phpseclib                              2.0.9-1                                      all          implementations of an arbitrary-precision integer arithmetic library
ii  php-psr-log                                1.0.2-1                                      all          common interface for logging libraries
ii  php-symfony-console                        3.4.6+dfsg-1ubuntu0.1                        all          run tasks from the command line
ii  php-symfony-debug                          3.4.6+dfsg-1ubuntu0.1                        all          tools to make debugging of PHP code easier
ii  php-symfony-filesystem                     3.4.6+dfsg-1ubuntu0.1                        all          basic filesystem utilities
ii  php-symfony-finder                         3.4.6+dfsg-1ubuntu0.1                        all          find files and directories
ii  php-symfony-polyfill-mbstring              1.6.0-2                                      all          Symfony polyfill for the Mbstring extension
ii  php-symfony-process                        3.4.6+dfsg-1ubuntu0.1                        all          execute commands in sub-processes
ii  php-tcpdf                                  6.2.13+dfsg-1ubuntu1                         all          PHP class for generating PDF files on-the-fly
ii  php-xml                                    1:7.2+60ubuntu1                              all          DOM, SimpleXML, WDDX, XML, and XSL module for PHP [default]
ii  php-zip                                    1:7.2+60ubuntu1                              all          Zip module for PHP [default]
ii  php7.2                                     7.2.15-0ubuntu0.18.04.1                      all          server-side, HTML-embedded scripting language (metapackage)
ii  php7.2-bz2                                 7.2.15-0ubuntu0.18.04.1                      amd64        bzip2 module for PHP
ii  php7.2-cli                                 7.2.15-0ubuntu0.18.04.1                      amd64        command-line interpreter for the PHP scripting language
ii  php7.2-common                              7.2.15-0ubuntu0.18.04.1                      amd64        documentation, examples and common module for PHP
ii  php7.2-curl                                7.2.15-0ubuntu0.18.04.1                      amd64        CURL module for PHP
ii  php7.2-gd                                  7.2.15-0ubuntu0.18.04.1                      amd64        GD module for PHP
ii  php7.2-intl                                7.2.15-0ubuntu0.18.04.1                      amd64        Internationalisation module for PHP
ii  php7.2-json                                7.2.15-0ubuntu0.18.04.1                      amd64        JSON module for PHP
ii  php7.2-mbstring                            7.2.15-0ubuntu0.18.04.1                      amd64        MBSTRING module for PHP
ii  php7.2-mysql                               7.2.15-0ubuntu0.18.04.1                      amd64        MySQL module for PHP
ii  php7.2-opcache                             7.2.15-0ubuntu0.18.04.1                      amd64        Zend OpCache module for PHP
ii  php7.2-readline                            7.2.15-0ubuntu0.18.04.1                      amd64        readline module for PHP
ii  php7.2-xml                                 7.2.15-0ubuntu0.18.04.1                      amd64        DOM, SimpleXML, WDDX, XML, and XSL module for PHP
ii  php7.2-zip                                 7.2.15-0ubuntu0.18.04.1                      amd64        Zip module for PHP
ii  phpmyadmin                                 4:4.6.6-5                                    all          MySQL web administration tool
study@study-VirtualBox:~$ 
 

여기서 php7.2로 시작되는 패키지들의 이름을 php7.3으로 시작되는 패키지로 바꾸어 추후 php 7.3 관련 패키지를 설치할 때 같이 설치해 주시면 됩니다.

study@study-VirtualBox:~$ sudo apt install php7.3 php7.3-bz2 php7.3-cli php7.3-common php7.3-curl php7.3-gd php7.3-intl php7.3-json php7.3-mbstring php7.3-mysql php7.3-opcache php7.3-readline php7.3-xml php7.3-zip

PPA 등록

PPA는 Personal Package Archive의 약자로 우리말로 바꾸면 개인 패키지 저장소 쯤 되빈다. 아까도 말했지만 현재 우분투 18.04 공식 저장소는 php 7.2만을 올려두고 있습니다. 따라서 7.3버전을 설치하려면 7.3이 올라가 있는 PPA를 이용해야 합니다.

study@study-VirtualBox:~$ sudo apt-get install software-properties-common
PPA를 등록하기 위해서는 먼저 위 패키지가 설치되어 있어야 합니다. 만약 최신 버전으로 설치되어 있다면 아래와 같은 안내가 나오게 될 겁니다.

study@study-VirtualBox:~$ sudo apt-get install software-properties-common
[sudo] study의 암호: 
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
패키지 software-properties-common는 이미 최신 버전입니다 (0.96.24.32.7).
0개 업그레이드, 0개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.
study@study-VirtualBox:~$  
위 패키지를 설치하고 이제 PPA를 설치해줍시다.

php와 관련하여 가장 유명하고 안정적으로 유지보수되어온 PPA는 Ondřej Surý의 PHP PPA(https://launchpad.net/~ondrej/+archive/ubuntu/php)입니다.

참고로 Ondřej Surý는 php PPA 뿐만 아니라 정말 다양하고 유용한 패키지의 PPA를 유지보수하고 있습니다. 해당 PPA는 https://launchpad.net/~ondrej에서 확인할 수 있습니다.

php PPA를 등록해봅시다.

study@study-VirtualBox:~$ sudo add-apt-repository ppa:ondrej/php

실행하면 PPA description이 나오고 엔터를 누르면 진행할 수 있게 됩니다.

study@study-VirtualBox:~$ sudo add-apt-repository ppa:ondrej/php
 Co-installable PHP versions: PHP 5.6, PHP 7.x and most requested extensions are included. Only Supported Versions of PHP (http://php.net/supported-versions.php) for Supported Ubuntu Releases (https://wiki.ubuntu.com/Releases) are provided. Don't ask for end-of-life PHP versions or Ubuntu release, they won't be provided.

Debian oldstable and stable packages are provided as well: https://deb.sury.org/#debian-dpa

You can get more information about the packages at https://deb.sury.org

BUGS&FEATURES: This PPA now has a issue tracker:
https://deb.sury.org/#bug-reporting

CAVEATS:
1. If you are using php-gearman, you need to add ppa:ondrej/pkg-gearman
2. If you are using apache2, you are advised to add ppa:ondrej/apache2
3. If you are using nginx, you are advise to add ppa:ondrej/nginx-mainline
   or ppa:ondrej/nginx

PLEASE READ: If you like my work and want to give me a little motivation, please consider donating regularly: https://donate.sury.org/

WARNING: add-apt-repository is broken with non-UTF-8 locales, see 
https://github.com/oerdnj/deb.sury.org/issues/56 for workaround:

# LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
 더 많은 정보: https://launchpad.net/~ondrej/+archive/ubuntu/php
[ENTER]을 눌러 진행하거나 Ctrl-c를 눌러 추가하는것을 취소합니다.
 
위 PPA description은 Ondřej Surý의 php PPA 사이트(https://launchpad.net/~ondrej/+archive/ubuntu/php)에서도 확인할 수 있습니다.

내용을 확인하시고 ENTER키를 눌러 진행해주세요. 만약 PPA 등록을 취소하시려면 Ctrl-c를 눌러주시면 됩니다.

우분투 18.04는 PPA를 등록하면 자동으로 apt update를 실행합니다만 등록 패키지 저장소의 패키지 목록 업데이트를 보다 확실히 하시려면 아래의 명령을 한번 더 실행해주시면 됩니다.

study@study-VirtualBox:~$ 

만약 추가한 Ondřej Surý의 php PPA에 자신의 서버에 설치된 패키지보다 최신 버전의 패키지가 있는 경우 업데이트 할 수 있습니다.

study@study-VirtualBox:~$ sudo apt update
기존:1 http://mirror.kakao.com/ubuntu bionic InRelease
기존:2 http://mirror.kakao.com/ubuntu bionic-updates InRelease                 
기존:3 http://mirror.kakao.com/ubuntu bionic-backports InRelease               
기존:4 http://mirror.kakao.com/ubuntu bionic-security InRelease                
기존:5 https://ftp.harukasan.org/mariadb/repo/10.3/ubuntu bionic InRelease     
무시:6 http://dl.google.com/linux/chrome/deb stable InRelease                  
기존:7 http://dl.google.com/linux/chrome/deb stable Release                    
기존:8 http://ppa.launchpad.net/ondrej/php/ubuntu bionic InRelease             
패키지 목록을 읽는 중입니다... 완료                                
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
37 packages can be upgraded. Run 'apt list --upgradable' to see them.
study@study-VirtualBox:~$ 

apt list --upgradable을 실행하여 업그레이드 가능한 패키지를 확인하시기 바랍니다.

study@study-VirtualBox:~$ apt list --upgradable
리스팅... 완료
libapache2-mod-php7.2/bionic 7.2.15-1+ubuntu18.04.1+deb.sury.org+1 amd64 [upgradable from: 7.2.15-0ubuntu0.18.04.1]
libgd3/bionic 2.2.5-5+ubuntu18.04.1+deb.sury.org+1 amd64 [upgradable from: 2.2.5-4ubuntu0.2]
libnorm1/bionic 1.5r6+dfsg1-6+ubuntu18.04.1+deb.sury.org+1 amd64 [upgradable from: 1.5r6+dfsg1-6]
libpcre3/bionic 2:8.42-1+ubuntu18.04.1+deb.sury.org+1 amd64 [upgradable from: 2:8.39-9]
libsodium23/bionic 1.0.17-0.1+ubuntu18.04.1+deb.sury.org+1 amd64 [upgradable from: 1.0.16-2]
libssl1.1/bionic 1.1.1a-2+ubuntu18.04.1+deb.sury.org+1 amd64 [upgradable from: 1.1.0g-2ubuntu4.3]
libzmq5/bionic 4.3.1-1+ubuntu18.04.1+deb.sury.org+2 amd64 [upgradable from: 4.2.5-1ubuntu0.1]
openssl/bionic 1.1.1a-2+ubuntu18.04.1+deb.sury.org+1 amd64 [upgradable from: 1.1.0g-2ubuntu4.3]
php/bionic,bionic 2:7.2+69+ubuntu18.04.1+deb.sury.org+1 all [upgradable from: 1:7.2+60ubuntu1]
php-apcu/bionic 5.1.17+4.0.11-1+ubuntu18.04.1+deb.sury.org+1 amd64 [upgradable from: 5.1.9+4.0.11-1build1]
php-apcu-bc/bionic 1.0.4-4+ubuntu18.04.1+deb.sury.org+1 amd64 [upgradable from: 1.0.3-2ubuntu2]
php-bz2/bionic,bionic 2:7.2+69+ubuntu18.04.1+deb.sury.org+1 all [upgradable from: 1:7.2+60ubuntu1]
php-cli/bionic,bionic 2:7.2+69+ubuntu18.04.1+deb.sury.org+1 all [upgradable from: 1:7.2+60ubuntu1]
php-common/bionic,bionic 2:69+ubuntu18.04.1+deb.sury.org+1 all [upgradable from: 1:60ubuntu1]
php-curl/bionic,bionic 2:7.2+69+ubuntu18.04.1+deb.sury.org+1 all [upgradable from: 1:7.2+60ubuntu1]
php-gd/bionic,bionic 2:7.2+69+ubuntu18.04.1+deb.sury.org+1 all [upgradable from: 1:7.2+60ubuntu1]
php-intl/bionic,bionic 2:7.2+69+ubuntu18.04.1+deb.sury.org+1 all [upgradable from: 1:7.2+60ubuntu1]
php-mbstring/bionic,bionic 2:7.2+69+ubuntu18.04.1+deb.sury.org+1 all [upgradable from: 1:7.2+60ubuntu1]
php-mysql/bionic,bionic 2:7.2+69+ubuntu18.04.1+deb.sury.org+1 all [upgradable from: 1:7.2+60ubuntu1]
php-pear/bionic,bionic 1:1.10.8+submodules+notgz-1+ubuntu18.04.1+deb.sury.org+1 all [upgradable from: 1:1.10.5+submodules+notgz-1ubuntu1.18.04.1]
php-xml/bionic,bionic 2:7.2+69+ubuntu18.04.1+deb.sury.org+1 all [upgradable from: 1:7.2+60ubuntu1]
php-zip/bionic,bionic 2:7.2+69+ubuntu18.04.1+deb.sury.org+1 all [upgradable from: 1:7.2+60ubuntu1]
php7.2/bionic,bionic 7.2.15-1+ubuntu18.04.1+deb.sury.org+1 all [upgradable from: 7.2.15-0ubuntu0.18.04.1]
php7.2-bz2/bionic 7.2.15-1+ubuntu18.04.1+deb.sury.org+1 amd64 [upgradable from: 7.2.15-0ubuntu0.18.04.1]
php7.2-cli/bionic 7.2.15-1+ubuntu18.04.1+deb.sury.org+1 amd64 [upgradable from: 7.2.15-0ubuntu0.18.04.1]
php7.2-common/bionic 7.2.15-1+ubuntu18.04.1+deb.sury.org+1 amd64 [upgradable from: 7.2.15-0ubuntu0.18.04.1]
php7.2-curl/bionic 7.2.15-1+ubuntu18.04.1+deb.sury.org+1 amd64 [upgradable from: 7.2.15-0ubuntu0.18.04.1]
php7.2-gd/bionic 7.2.15-1+ubuntu18.04.1+deb.sury.org+1 amd64 [upgradable from: 7.2.15-0ubuntu0.18.04.1]
php7.2-intl/bionic 7.2.15-1+ubuntu18.04.1+deb.sury.org+1 amd64 [upgradable from: 7.2.15-0ubuntu0.18.04.1]
php7.2-json/bionic 7.2.15-1+ubuntu18.04.1+deb.sury.org+1 amd64 [upgradable from: 7.2.15-0ubuntu0.18.04.1]
php7.2-mbstring/bionic 7.2.15-1+ubuntu18.04.1+deb.sury.org+1 amd64 [upgradable from: 7.2.15-0ubuntu0.18.04.1]
php7.2-mysql/bionic 7.2.15-1+ubuntu18.04.1+deb.sury.org+1 amd64 [upgradable from: 7.2.15-0ubuntu0.18.04.1]
php7.2-opcache/bionic 7.2.15-1+ubuntu18.04.1+deb.sury.org+1 amd64 [upgradable from: 7.2.15-0ubuntu0.18.04.1]
php7.2-readline/bionic 7.2.15-1+ubuntu18.04.1+deb.sury.org+1 amd64 [upgradable from: 7.2.15-0ubuntu0.18.04.1]
php7.2-xml/bionic 7.2.15-1+ubuntu18.04.1+deb.sury.org+1 amd64 [upgradable from: 7.2.15-0ubuntu0.18.04.1]
php7.2-zip/bionic 7.2.15-1+ubuntu18.04.1+deb.sury.org+1 amd64 [upgradable from: 7.2.15-0ubuntu0.18.04.1]
python3-httplib2/bionic,bionic 0.11.3-1+ubuntu18.04.1+deb.sury.org+1 all [upgradable from: 0.9.2+dfsg-1]
study@study-VirtualBox:~$ 

내용을 확인하시고 업그레이드하고 싶은 패키지가 있다면 업그레이드를 실행해주세요.
개인적으로 이 업그레이드는 필요없다고 생각합니다. 우리의 목표는 php 7.3을 설치하는 것이지, 공식저장소에서 php를 업그레이드 한 이후, 공식 저장소에 올라오지 않은 최신 패키지를 설치하려는 것이 아니므로 굳이 업그레이드할 필요는 없는 것입니다.

php 7.3 설치

이제 본격적으로 php 7.3을 설치해 봅시다.

원칙적으로 php 7.3의 핵심 패키지를 설치하고 나중에 php 7.3 관련 추가 모듈 패키지를 설치하도록 하겠습니다.

php 7.3 핵심 패키지 설치

study@study-VirtualBox:~$ sudo apt install php7.3 php7.3-common php7.3-cli
이 세 패키지는 php 7.3의 가장 핵심적인 패키지입니다.

위 명령을 실행하면 다음과 같이 진행됩니다.

study@study-VirtualBox:~$ sudo apt install php7.3 php7.3-common php7.3-cli
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
다음의 추가 패키지가 설치될 것입니다 :
  libapache2-mod-php7.3 libpcre2-8-0 php7.3-json php7.3-opcache
  php7.3-readline
다음 새 패키지를 설치할 것입니다:
  libapache2-mod-php7.3 libpcre2-8-0 php7.3 php7.3-cli php7.3-common
  php7.3-json php7.3-opcache php7.3-readline
0개 업그레이드, 8개 새로 설치, 0개 제거 및 37개 업그레이드 안 함.
4,051 k바이트 아카이브를 받아야 합니다.
이 작업 후 17.6 M바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n] 

php 7.3 확장 패키지 설치

이제 php 7.3과 관련하여 자신의 서버 환경에 맞춰 필요한 추가 패키지들을 설치해 주시면 됩니다.

추천 확장 패키지 설치

아래는 php 7.3 관련하여 빈번하게 사용되는 추가 확장 패키지 설치의 예입니다. 잘 모르면 이대로 설치하시면 됩니다.

study@study-VirtualBox:~$ sudo apt install php7.3-bcmath php7.3-bz2 php7.3-curl php7.3-gd php7.3-intl php7.3-mbstring php7.3-xml php7.3-zip php7.3-mysql php7.3-gmp php7.3-xmlrpc

그럼 다음과 같이 진행됩니다.

study@study-VirtualBox:~$ sudo apt install php7.3-bcmath php7.3-bz2 php7.3-curl php7.3-gd php7.3-intl php7.3-mbstring php7.3-xml php7.3-zip php7.3-mysql php7.3-gmp php7.3-xmlrpc
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
다음의 추가 패키지가 설치될 것입니다 :
  libxmlrpc-epi0
다음 새 패키지를 설치할 것입니다:
  libxmlrpc-epi0 php7.3-bcmath php7.3-bz2 php7.3-curl php7.3-gd php7.3-gmp
  php7.3-intl php7.3-mbstring php7.3-mysql php7.3-xml php7.3-xmlrpc
  php7.3-zip
0개 업그레이드, 12개 새로 설치, 0개 제거 및 37개 업그레이드 안 함.
1,021 k바이트 아카이브를 받아야 합니다.
이 작업 후 3,724 k바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n] 

php 7.2 때 사용된 확장 패키지 설치

study@study-VirtualBox:~$ dpkg -l | grep php | tee ~/다운로드/packages.txt 

아까 우리는 위 명령을 이용해 php 7.3을 설치하기 전에 php로 시작하는 패키지 목록들을 확인했습니다. 설치되어 있는 php7.2용 패키지에 대응되는 php7.3용 패키지들이 설치되어 있는지 확인하고 설치되어 있지 않은 것들만 따로 설치해주시면 됩니다.

php 버전 확인

터미널 확인

먼저 터미널에서 php 버전을 확인해봅시다.

study@study-VirtualBox:~$ php -v
PHP 7.3.2-3+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Feb  8 2019 15:43:57) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.2, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.2-3+ubuntu18.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
study@study-VirtualBox:~$ 

php 7.3 버전이 설치된 것을 확인할 수 있습니다.

참고로 터미널에서 위 명령을 통해 버전을 확인하면 서버에 설치되어있는 최신 php의 버전만을 확인할 수 있습니다. 여기서 유의할 점은 위 명령을 통해 확인할 수 있는 php의 버전은 서버에 설치된 최신 php의 버전이지, 서버에서 활성화 되어 있는 php의 버전이 아니라는 점입니다. 이게 무슨 뜻인지 다음을 통해 확인해 봅시다.

php.ini 파일 수정

php.ini 파일 수정은 아래 링크를 참고하여 작업해주시면 됩니다.

2018/11/21 - [IT/가상머신, 서버, CMS 구축] - 서버 환경 파일 수정 - php.ini, apache2.conf

주요 변경점의 줄번호와 원본 내용 및 수정 내용을 알려드리도록 하겠습니다.

줄번호 197 (php 7.2는 줄번호 197)

short_open_tag = Off

short_open_tag = On


줄번호 385 (php 7.2는 줄번호 383)

max_execution_time = 30

max_execution_time = 0


줄번호 395 (php 7.2는 줄번호 393)

max_input_time = 60

max_input_time = -1


줄번호 406 (php 7.2는 줄번호 404)

memory_limit = 128M

memory_limit = 2048M


줄번호 692 (php 7.2는 줄번호 672)

post_max_size = 8M

post_max_size = 2048M


줄번호 844 (php 7.2는 줄번호 825)

upload_max_filesize = 2M

upload_max_filesize = 2048M


줄번호 959 (php 7.2는 줄번호 939)

;date.timezone =

date.timezone = Asia/Seoul


☞ 주의

아래의 수정값 중 숫자는 최댓값입니다. 실제 서버 운영 시에는 이 최댓값을 사용할 수 없는 것이 보통입니다. 자신의 서버 사양과 회선, 트래픽 등에 따라 서버 ㅍ곤리자가 적절히 수정해주어야 합니다.

줄번호 959의 ;date.timezone = 구문은 ;(세미콜론)으로 주석처리 되어 있습니다. 반드시 이 ;(세미콜론)을 제거하고 Asia/Seoul을 채워주시기 바랍니다.

환경설정 파일은 수정 작업을 하기 전에 반드시 백업을 하여 혹시 모를 불상사를 미연에 방지하도록 합시다.

수정 완료 후 서버를 재시작하여 변경 내용을 적용해주도록 합시다.

study@study-VirtualBox:~$ sudo systemctl restart apache2.service

phpinfo.php 파일 확인

우리는 php 7.2를 설치 후 php의 환경변수 설정값의 정보를 확인하기 위해 phpinfo.php 파일을 생성한 적이 있습니다. 만약 생성한 적이 없다면 아래 링크를 참고하여 파일을 생성해주시기 바랍니다..

2018/11/19 - [IT/가상머신, 서버, CMS 구축] - PHP7 설치

이제 phpinfo.php 파일을 웹브라우저에서 불러와 봅시다.

http://localhost/phpinfo.php에 접속해봅니다.

위 그림을 확인해보니 php 버전이 7.3이 아닌 7.2.15에 머물러 있습니다.

이 이야기인 즉 서버에서는 아직 php 7.2.15 버전이 활성화 되어 있고, 방금 전 설치했던 php 7.3은 비활성화되어 있다는 말입니다.

활성화 php 버전 변경

이제 구 버전의 php를 비활성화하고 새 버전의 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:~$ 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:~$ sudo systemctl restart apache2
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을 쓰려면 해당 번호를 선택해주셔야 합니다.

phpinfo.php 파일 재확인

이제 다시 한번 phpinfo.php 파일을 확인해 봅시다.

php 버전이 7.3대로 바뀐 것을 확인할 수 있습니다.

이제 서버 내 활성 php가 7.3으로 제대로 바뀌었습니다.



기존 php 7.2 제거

php 제거는 두 가지 방식이 있습니다.

sudo apt purge php7.2* 명령

study@study-VirtualBox:~$ sudo apt purge php7.2*
[sudo] study의 암호: 
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
Note, selecting 'php7.2-pdo-odbc' for glob 'php7.2*'
Note, selecting 'php7.2-phalcon' for glob 'php7.2*'
Note, selecting 'php7.2-imagick' for glob 'php7.2*'
Note, selecting 'php7.2-redis' for glob 'php7.2*'
Note, selecting 'php7.2-bz2' for glob 'php7.2*'
Note, selecting 'php7.2-mongodb' for glob 'php7.2*'
Note, selecting 'php7.2-common' for glob 'php7.2*'
Note, selecting 'php7.2-cgi' for glob 'php7.2*'
Note, selecting 'php7.2-cli' for glob 'php7.2*'
Note, selecting 'php7.2-dba' for glob 'php7.2*'
Note, selecting 'php7.2-dev' for glob 'php7.2*'
Note, selecting 'php7.2-smbclient' for glob 'php7.2*'
Note, selecting 'php7.2-dom' for glob 'php7.2*'
Note, selecting 'php7.2-bcmath' for glob 'php7.2*'
Note, selecting 'php7.2-oauth' for glob 'php7.2*'
Note, selecting 'php7.2-memcached' for glob 'php7.2*'
Note, selecting 'php7.2-pinba' for glob 'php7.2*'
Note, selecting 'php7.2-fpm' for glob 'php7.2*'
Note, selecting 'php7.2-ftp' for glob 'php7.2*'
Note, selecting 'php7.2-igbinary' for glob 'php7.2*'
Note, selecting 'php7.2-gmp' for glob 'php7.2*'
Note, selecting 'php7.2-sodium' for glob 'php7.2*'
Note, selecting 'php7.2-apcu-bc' for glob 'php7.2*'
Note, selecting 'php7.2-mysql' for glob 'php7.2*'
Note, selecting 'php7.2-memcache' for glob 'php7.2*'
Note, selecting 'php7.2-uuid' for glob 'php7.2*'
Note, selecting 'php7.2-sockets' for glob 'php7.2*'
Note, selecting 'php7.2-tidy' for glob 'php7.2*'
Note, selecting 'php7.2-mailparse' for glob 'php7.2*'
Note, selecting 'php7.2' for glob 'php7.2*'
Note, selecting 'php7.2-sysvmsg' for glob 'php7.2*'
Note, selecting 'php7.2-wddx' for glob 'php7.2*'
Note, selecting 'php7.2-lua' for glob 'php7.2*'
Note, selecting 'php7.2-sqlite3' for glob 'php7.2*'
Note, selecting 'php7.2-pdo-pgsql' for glob 'php7.2*'
Note, selecting 'php7.2-calendar' for glob 'php7.2*'
Note, selecting 'php7.2-fileinfo' for glob 'php7.2*'
Note, selecting 'php7.2-pdo' for glob 'php7.2*'
Note, selecting 'php7.2-xmlwriter' for glob 'php7.2*'
Note, selecting 'php7.2-json' for glob 'php7.2*'
Note, selecting 'php7.2-opcache' for glob 'php7.2*'
Note, selecting 'php7.2-mysqli' for glob 'php7.2*'
Note, selecting 'php7.2-sass' for glob 'php7.2*'
Note, selecting 'php7.2-sysvsem' for glob 'php7.2*'
Note, selecting 'php7.2-sysvshm' for glob 'php7.2*'
Note, selecting 'php7.2-phar' for glob 'php7.2*'
Note, selecting 'php7.2-rrd' for glob 'php7.2*'
Note, selecting 'php7.2-sybase' for glob 'php7.2*'
Note, selecting 'php7.2-curl' for glob 'php7.2*'
Note, selecting 'php7.2-stomp' for glob 'php7.2*'
Note, selecting 'php7.2-msgpack' for glob 'php7.2*'
Note, selecting 'php7.2-ldap' for glob 'php7.2*'
Note, selecting 'php7.2-gearman' for glob 'php7.2*'
Note, selecting 'php7.2-raphf' for glob 'php7.2*'
Note, selecting 'php7.2-phpdbg' for glob 'php7.2*'
Note, selecting 'php7.2-xmlreader' for glob 'php7.2*'
Note, selecting 'php7.2-imap' for glob 'php7.2*'
Note, selecting 'php7.2-gnupg' for glob 'php7.2*'
Note, selecting 'php7.2-radius' for glob 'php7.2*'
Note, selecting 'php7.2-uploadprogress' for glob 'php7.2*'
Note, selecting 'php7.2-posix' for glob 'php7.2*'
Note, selecting 'php7.2-iconv' for glob 'php7.2*'
Note, selecting 'php7.2-xml' for glob 'php7.2*'
Note, selecting 'php7.2-xsl' for glob 'php7.2*'
Note, selecting 'php7.2-intl' for glob 'php7.2*'
Note, selecting 'php7.2-yac' for glob 'php7.2*'
Note, selecting 'php7.2-zip' for glob 'php7.2*'
Note, selecting 'php7.2-tokenizer' for glob 'php7.2*'
Note, selecting 'php7.2-zmq' for glob 'php7.2*'
Note, selecting 'php7.2-odbc' for glob 'php7.2*'
Note, selecting 'php7.2-mbstring' for glob 'php7.2*'
Note, selecting 'php7.2-readline' for glob 'php7.2*'
Note, selecting 'php7.2-ds' for glob 'php7.2*'
Note, selecting 'php7.2-gd' for glob 'php7.2*'
Note, selecting 'php7.2-ps' for glob 'php7.2*'
Note, selecting 'php7.2-interbase' for glob 'php7.2*'
Note, selecting 'php7.2-yaml' for glob 'php7.2*'
Note, selecting 'php7.2-snmp' for glob 'php7.2*'
Note, selecting 'php7.2-pdo-mysql' for glob 'php7.2*'
Note, selecting 'php7.2-mysqlnd' for glob 'php7.2*'
Note, selecting 'php7.2-xmlrpc' for glob 'php7.2*'
Note, selecting 'php7.2-soap' for glob 'php7.2*'
Note, selecting 'php7.2-solr' for glob 'php7.2*'
Note, selecting 'php7.2-simplexml' for glob 'php7.2*'
Note, selecting 'php7.2-ssh2' for glob 'php7.2*'
Note, selecting 'php7.2-pdo-sqlite' for glob 'php7.2*'
Note, selecting 'php7.2-pdo-dblib' for glob 'php7.2*'
Note, selecting 'php7.2-pspell' for glob 'php7.2*'
Note, selecting 'php7.2-amqp' for glob 'php7.2*'
Note, selecting 'php7.2-gmagick' for glob 'php7.2*'
Note, selecting 'php7.2-pgsql' for glob 'php7.2*'
Note, selecting 'php7.2-enchant' for glob 'php7.2*'
Note, selecting 'php7.2-recode' for glob 'php7.2*'
Note, selecting 'php7.2-tideways' for glob 'php7.2*'
Note, selecting 'php7.2-shmop' for glob 'php7.2*'
Note, selecting 'php7.2-libsodium' for glob 'php7.2*'
Note, selecting 'php7.2-propro' for glob 'php7.2*'
Note, selecting 'php7.2-gettext' for glob 'php7.2*'
Note, selecting 'php7.2-apcu' for glob 'php7.2*'
Note, selecting 'php7.2-pdo-firebird' for glob 'php7.2*'
Note, selecting 'php7.2-exif' for glob 'php7.2*'
Note, selecting 'php7.2-ctype' for glob 'php7.2*'
Note, selecting 'php7.2-http' for glob 'php7.2*'
Note, selecting 'php7.2-geoip' for glob 'php7.2*'
Note, selecting 'php7.2-xdebug' for glob 'php7.2*'
패키지 'php7.2-sodium'는 설치되어 있지 않아, 지우지 않았습니다.
주의, 'php7.2-calendar' 대신에 'php7.2-common' 패키지를 선택합니다
주의, 'php7.2-ctype' 대신에 'php7.2-common' 패키지를 선택합니다
주의, 'php7.2-exif' 대신에 'php7.2-common' 패키지를 선택합니다
주의, 'php7.2-fileinfo' 대신에 'php7.2-common' 패키지를 선택합니다
주의, 'php7.2-ftp' 대신에 'php7.2-common' 패키지를 선택합니다
주의, 'php7.2-gettext' 대신에 'php7.2-common' 패키지를 선택합니다
주의, 'php7.2-iconv' 대신에 'php7.2-common' 패키지를 선택합니다
주의, 'php7.2-pdo' 대신에 'php7.2-common' 패키지를 선택합니다
주의, 'php7.2-phar' 대신에 'php7.2-common' 패키지를 선택합니다
주의, 'php7.2-posix' 대신에 'php7.2-common' 패키지를 선택합니다
주의, 'php7.2-shmop' 대신에 'php7.2-common' 패키지를 선택합니다
주의, 'php7.2-sockets' 대신에 'php7.2-common' 패키지를 선택합니다
주의, 'php7.2-sysvmsg' 대신에 'php7.2-common' 패키지를 선택합니다
주의, 'php7.2-sysvsem' 대신에 'php7.2-common' 패키지를 선택합니다
주의, 'php7.2-sysvshm' 대신에 'php7.2-common' 패키지를 선택합니다
주의, 'php7.2-tokenizer' 대신에 'php7.2-common' 패키지를 선택합니다
주의, 'php7.2-mysqli' 대신에 'php7.2-mysql' 패키지를 선택합니다
주의, 'php7.2-mysqlnd' 대신에 'php7.2-mysql' 패키지를 선택합니다
주의, 'php7.2-pdo-mysql' 대신에 'php7.2-mysql' 패키지를 선택합니다
주의, 'php7.2-pdo-odbc' 대신에 'php7.2-odbc' 패키지를 선택합니다
주의, 'php7.2-pdo-pgsql' 대신에 'php7.2-pgsql' 패키지를 선택합니다
주의, 'php7.2-pdo-sqlite' 대신에 'php7.2-sqlite3' 패키지를 선택합니다
주의, 'php7.2-dom' 대신에 'php7.2-xml' 패키지를 선택합니다
주의, 'php7.2-simplexml' 대신에 'php7.2-xml' 패키지를 선택합니다
주의, 'php7.2-wddx' 대신에 'php7.2-xml' 패키지를 선택합니다
주의, 'php7.2-xmlreader' 대신에 'php7.2-xml' 패키지를 선택합니다
주의, 'php7.2-xmlwriter' 대신에 'php7.2-xml' 패키지를 선택합니다
주의, 'php7.2-amqp' 대신에 'php-amqp' 패키지를 선택합니다
주의, 'php7.2-apcu' 대신에 'php-apcu' 패키지를 선택합니다
주의, 'php7.2-ds' 대신에 'php-ds' 패키지를 선택합니다
주의, 'php7.2-gearman' 대신에 'php-gearman' 패키지를 선택합니다
주의, 'php7.2-geoip' 대신에 'php-geoip' 패키지를 선택합니다
주의, 'php7.2-gmagick' 대신에 'php-gmagick' 패키지를 선택합니다
주의, 'php7.2-gnupg' 대신에 'php-gnupg' 패키지를 선택합니다
주의, 'php7.2-http' 대신에 'php-http' 패키지를 선택합니다
주의, 'php7.2-igbinary' 대신에 'php-igbinary' 패키지를 선택합니다
주의, 'php7.2-imagick' 대신에 'php-imagick' 패키지를 선택합니다
주의, 'php7.2-libsodium' 대신에 'php-libsodium' 패키지를 선택합니다
주의, 'php7.2-mailparse' 대신에 'php-mailparse' 패키지를 선택합니다
주의, 'php7.2-memcache' 대신에 'php-memcache' 패키지를 선택합니다
주의, 'php7.2-memcached' 대신에 'php-memcached' 패키지를 선택합니다
주의, 'php7.2-mongodb' 대신에 'php-mongodb' 패키지를 선택합니다
주의, 'php7.2-msgpack' 대신에 'php-msgpack' 패키지를 선택합니다
주의, 'php7.2-oauth' 대신에 'php-oauth' 패키지를 선택합니다
주의, 'php7.2-pinba' 대신에 'php-pinba' 패키지를 선택합니다
주의, 'php7.2-propro' 대신에 'php-propro' 패키지를 선택합니다
주의, 'php7.2-ps' 대신에 'php-ps' 패키지를 선택합니다
주의, 'php7.2-radius' 대신에 'php-radius' 패키지를 선택합니다
주의, 'php7.2-raphf' 대신에 'php-raphf' 패키지를 선택합니다
주의, 'php7.2-redis' 대신에 'php-redis' 패키지를 선택합니다
주의, 'php7.2-rrd' 대신에 'php-rrd' 패키지를 선택합니다
주의, 'php7.2-sass' 대신에 'php-sass' 패키지를 선택합니다
주의, 'php7.2-smbclient' 대신에 'php-smbclient' 패키지를 선택합니다
주의, 'php7.2-solr' 대신에 'php-solr' 패키지를 선택합니다
주의, 'php7.2-ssh2' 대신에 'php-ssh2' 패키지를 선택합니다
주의, 'php7.2-stomp' 대신에 'php-stomp' 패키지를 선택합니다
주의, 'php7.2-tideways' 대신에 'php-tideways' 패키지를 선택합니다
주의, 'php7.2-uploadprogress' 대신에 'php-uploadprogress' 패키지를 선택합니다
주의, 'php7.2-uuid' 대신에 'php-uuid' 패키지를 선택합니다
주의, 'php7.2-xdebug' 대신에 'php-xdebug' 패키지를 선택합니다
주의, 'php7.2-yac' 대신에 'php-yac' 패키지를 선택합니다
주의, 'php7.2-yaml' 대신에 'php-yaml' 패키지를 선택합니다
주의, 'php7.2-zmq' 대신에 'php-zmq' 패키지를 선택합니다
주의, 'php7.2-pdo-firebird' 대신에 'php7.2-interbase' 패키지를 선택합니다
주의, 'php7.2-pdo-dblib' 대신에 'php7.2-sybase' 패키지를 선택합니다
주의, 'php7.2-apcu-bc' 대신에 'php-apcu-bc' 패키지를 선택합니다
주의, 'php7.2-phalcon' 대신에 'php-phalcon' 패키지를 선택합니다
주의, 'php7.2-lua' 대신에 'php-lua' 패키지를 선택합니다
패키지 'php7.2-bcmath'는 설치되어 있지 않아, 지우지 않았습니다.
패키지 'php7.2-cgi'는 설치되어 있지 않아, 지우지 않았습니다.
패키지 'php7.2-dba'는 설치되어 있지 않아, 지우지 않았습니다.
패키지 'php7.2-dev'는 설치되어 있지 않아, 지우지 않았습니다.
패키지 'php7.2-enchant'는 설치되어 있지 않아, 지우지 않았습니다.
패키지 'php7.2-fpm'는 설치되어 있지 않아, 지우지 않았습니다.
패키지 'php7.2-gmp'는 설치되어 있지 않아, 지우지 않았습니다.
패키지 'php7.2-imap'는 설치되어 있지 않아, 지우지 않았습니다.
패키지 'php7.2-interbase'는 설치되어 있지 않아, 지우지 않았습니다.
패키지 'php7.2-ldap'는 설치되어 있지 않아, 지우지 않았습니다.
패키지 'php7.2-odbc'는 설치되어 있지 않아, 지우지 않았습니다.
패키지 'php7.2-pgsql'는 설치되어 있지 않아, 지우지 않았습니다.
패키지 'php7.2-phpdbg'는 설치되어 있지 않아, 지우지 않았습니다.
패키지 'php7.2-pspell'는 설치되어 있지 않아, 지우지 않았습니다.
패키지 'php7.2-recode'는 설치되어 있지 않아, 지우지 않았습니다.
패키지 'php7.2-snmp'는 설치되어 있지 않아, 지우지 않았습니다.
패키지 'php7.2-soap'는 설치되어 있지 않아, 지우지 않았습니다.
패키지 'php7.2-sqlite3'는 설치되어 있지 않아, 지우지 않았습니다.
패키지 'php7.2-sybase'는 설치되어 있지 않아, 지우지 않았습니다.
패키지 'php7.2-tidy'는 설치되어 있지 않아, 지우지 않았습니다.
패키지 'php7.2-xmlrpc'는 설치되어 있지 않아, 지우지 않았습니다.
패키지 'php7.2-xsl'는 설치되어 있지 않아, 지우지 않았습니다.
다음의 추가 패키지가 설치될 것입니다 :
  libpcre3 php-apcu php-apcu-bc php-common
다음 패키지를 지울 것입니다:
  libapache2-mod-php7.2* php* php-bz2* php-cli* php-curl* php-gd* php-intl*
  php-mbstring* php-mysql* php-xml* php-zip* php7.2* php7.2-bz2* php7.2-cli*
  php7.2-common* php7.2-curl* php7.2-gd* php7.2-intl* php7.2-json*
  php7.2-mbstring* php7.2-mysql* php7.2-opcache* php7.2-readline* php7.2-xml*
  php7.2-zip*
다음 패키지를 업그레이드할 것입니다:
  libpcre3 php-apcu php-apcu-bc php-common
4개 업그레이드, 0개 새로 설치, 25개 제거 및 8개 업그레이드 안 함.
362 k바이트 아카이브를 받아야 합니다.
이 작업 후 20.2 M바이트의 디스크 공간이 비워집니다.
계속 하시겠습니까? [Y/n] 

sudo apt-get purge `dpkg -l | grep php7.2| awk '{print $2}' |tr "\n" " "` 명령

study@study-VirtualBox:~$ sudo apt-get purge `dpkg -l | grep php7.2| awk '{print $2}' |tr "\n" " "`
[sudo] study의 암호: 
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
다음의 추가 패키지가 설치될 것입니다 :
  php-apcu php-apcu-bc php-common
다음 패키지를 지울 것입니다:
  libapache2-mod-php7.2* php* php-bz2* php-cli* php-curl* php-gd* php-intl*
  php-mbstring* php-mysql* php-xml* php-zip* php7.2* php7.2-bz2* php7.2-cli*
  php7.2-common* php7.2-curl* php7.2-gd* php7.2-intl* php7.2-json*
  php7.2-mbstring* php7.2-mysql* php7.2-opcache* php7.2-readline* php7.2-xml*
  php7.2-zip*
다음 패키지를 업그레이드할 것입니다:
  php-apcu php-apcu-bc php-common
3개 업그레이드, 0개 새로 설치, 25개 제거 및 9개 업그레이드 안 함.
124 k바이트 아카이브를 받아야 합니다.
이 작업 후 20.1 M바이트의 디스크 공간이 비워집니다.
계속 하시겠습니까? [Y/n] 
개인적으로 용량의 문제만 없다면 굳이 제거하지 않는 것이 좋지 않을까 싶습니다. 만약 업그레이드하여 문제가 생긴 경우 다시 복원할 필요가 생길 수도 있기 때문입니다.

여러분 수고하셨습니다.