CentOS 8 이 되면서 내장 패키지들의 버전이 많이 높아졌고 PHP 는 7.2과 7.3이 제공됩니다.


이 글에서는 8에 추가된 패키지 관리자인 dnfmodule 기능을 사용해서 PHP 7.3 을 설치하는 방법을 설명합니다.


dnf module 

8 부터는 module 개념이 추가되서 ruby, python, php 등 개발 언어들은 여러 버전이 제공되므로 필요한 버전을 선택해서 설치할 수 있습니다.

동시에 여러 버전 설치는 불가능하며 이런 경우 해당 언어의 버전 관리 도구(nvm (Node version Manager) 등을 사용해야 합니다)


module list

먼저 php module list 를 가져옵니다.

EPEL 저장소 추가

$ dnf module list php

Last metadata expiration check: 0:02:20 ago on Fri May 15 01:00:17 2020.
CentOS-8 - AppStream
Name                    Stream                        Profiles                                      Summary                                  
php                     7.2 [d][e]                    common [d], devel, minimal                    PHP scripting language                   
php                     7.3                           common, devel, minimal                        PHP scripting language                   

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
BASH


Stream 에서 대괄호안에 축약어가 있는데 d 는 default, e 는 enabled, i 는 installed 의 약자입니다.

즉 위의 예제는 php 7.2 가 기본 설정이고 아직 설치되지는 않았습니다.


module enable

이제 사용하려면 모듈(PHP) 의 버전을 활성화해주면 됩니다.  사용법은 enable module:version 형식으로 기술하면 되며 모듈은 PHP 버전은 7.3 이므로 다음과 같은 명령을 실행합니다.

php 7.3 활성화

$ dnf module enable php:7.3
BASH


만약 다음과 같이 모듈을 스위칭할 수 없다는 에러가 나는 경우가 있습니다.

The operation would result in switching of module 'php' stream '7.2' to stream '7.3'
Error: It is not possible to switch enabled streams of a module.
It is recommended to remove all installed content from the module, and reset the module using 'dnf module reset <module_name>' command. After you reset the module, you can enable the other stream.
CODE


그럴 경우 아래 명령어로 모듈을 리셋해 줍니다.

module reset

$ dnf module reset php -y
BASH


reset 이 끝났으면 다시 7.3 모듈을 활성화해줍니다.

php 7.3 활성화

$ dnf module enable php:7.3 -y
BASH


아래와 같이 확인 화면이 나오면 Y 를 누르면 스위칭이 끝나고 이미 설치한 패키지는 변경하지 않는다는 안내 메시지가 표시됩니다.

Dependencies resolved.
========================================================================================================
 Package                 Arch                   Version                   Repository               Size
========================================================================================================
Enabling module streams:
 php                                            7.3                                                    

Transaction Summary
========================================================================================================

Is this ok [y/N]: y
Complete!

Switching module streams does not alter installed packages (see 'module enable' in dnf(8) for details)
CODE


PHP 7.3 설치

이제 dnf install 명령으로 php 를 설치하면 활성화된 7.3  버전이 설치됩니다.

$ dnf install nginx php php-cli php-fpm php-json php-intl php-mbstring php-pdo php-xml php-gd php-mysqlnd php-zip php-pear php-gmp
CODE


같이 보기

Ref