Ubuntu 18.04 Server / PHP 최신 버전으로 업그레이드하는 방법
Ubuntu 18.04 Server에서 PHP를 최신 버전으로 바꾸려면 먼저 운영체제와 애플리케이션의 지원·호환성을 확인하고, 지원되는 Ubuntu 서버에서 새 PHP를 시험한 뒤 전환하는 것이 안전합니다. 예전처럼 외부 저장소를 추가하고 전체 패키지를 일괄 업그레이드하는 방법만으로는 원하는 PHP 버전이나 웹 서버 적용을 보장할 수 없습니다.
Ubuntu 18.04에서 먼저 확인할 점
Ubuntu 18.04 LTS의 일반 보안 유지보수는 2023년 5월에 끝났습니다. Ubuntu Pro의 확대 보안 유지보수(ESM)는 적용 대상 패키지에 추가 보안 수정을 제공하지만, 모든 외부 저장소나 모든 PHP 버전의 지원을 뜻하지는 않습니다. Ubuntu 18.04 지원 기간과 현재 구독·패키지의 적용 범위를 확인하세요.
PHP 프로젝트가 지원하는 버전과 배포판이 보안 패치를 제공하는 패키지는 구분해야 합니다. Ubuntu의 패키지는 버전 숫자가 그대로여도 보안 수정이 반영될 수 있으며, 반대로 외부 패키지에는 Ubuntu Pro 보장이 자동으로 적용되지 않습니다. PHP 공식 지원 버전과 패키지 공급자의 정책을 함께 확인하세요.
장기적으로는 지원되는 Ubuntu LTS를 새 서버에 설치해 서비스를 옮기는 방법을 권장합니다. 기존 서버를 제자리에서 업그레이드할 때는 LTS를 건너뛸 수 없으므로 18.04에서 20.04로 이동한 뒤 순차적으로 진행해야 합니다. 자세한 경로는 Ubuntu Server 업그레이드 안내를 확인하세요.
현재 PHP와 웹 서버 구성 확인하기
운영 서버를 변경하기 전에 명령줄 인터페이스(CLI)의 버전과 로드된 확장, 설치된 패키지를 기록합니다. 다음 명령은 정보를 조회하며 PHP가 설치되지 않은 경우 일부 명령이 실패할 수 있습니다.
lsb_release -a
php -v
php --ini
php -m
dpkg -l 'php*' | grep '^ii'
apt-cache policy php
php -v는 CLI 버전입니다. 웹 요청에 쓰이는 Apache 모듈이나 PHP-FPM(FastCGI Process Manager)의 버전과 설정은 다를 수 있습니다. Apache에서는 apache2ctl -M으로 활성 모듈을, Nginx나 Apache의 사이트 설정에서는 FastCGI가 가리키는 소켓이나 주소를 확인하세요. PHP-FPM 사용 여부는 서비스 목록과 웹 서버 설정을 함께 살펴보아야 합니다.
systemctl list-units --type=service --all 'php*-fpm.service'
sudo apache2ctl -M
Apache를 사용하지 않는 서버에서는 두 번째 명령을 실행할 필요가 없습니다. 설정 파일, 사이트 파일, 데이터베이스 및 업로드 파일을 백업하고 복원 절차를 확인하세요. 비밀번호나 개인정보가 포함된 설정은 안전하게 보관합니다.
새 버전 선택과 시험 환경 준비
- 애플리케이션, 플러그인과 의존성이 지원하는 PHP 버전을 확인합니다. PHP의 주요 버전 변경에는 호환되지 않는 동작이 있을 수 있으므로 현재 버전부터 목표 버전까지의 PHP 마이그레이션 안내를 확인합니다.
- 지원되는 Ubuntu와 PHP 조합을 선택하고 운영 환경과 분리된 시험 서버를 준비합니다. 복원 가능한 백업을 사용하고 실제 사용자 데이터의 보호에도 유의하세요.
- 필요한 PHP 확장을 기록하고 새 환경에 맞는 패키지를 찾습니다. 데이터베이스 드라이버, 이미지 처리, XML, ZIP 등은 애플리케이션마다 필요 여부가 다릅니다.
- 시험 서버에서 로그인, 데이터베이스 연결, 파일 업로드, 예약 작업과 주요 화면을 확인하고 오류 로그를 검토합니다. 문제가 있으면 애플리케이션과 확장을 수정한 뒤 다시 시험합니다.
예: Ubuntu 24.04 시험 서버에 PHP 8.3 설치
아래는 Ubuntu 18.04가 아닌 새 Ubuntu 24.04 LTS 시험 서버에서 배포판의 PHP 8.3 CLI와 PHP-FPM을 설치하는 예입니다. PHP 8.3이 항상 최신 버전이라는 뜻은 아닙니다. 선택한 Ubuntu 버전의 지원 기간과 Ubuntu 24.04의 PHP 8.3 패키지 목록을 확인하고, 앱에 필요한 확장만 추가하세요.
패키지 후보와 변경 계획을 먼저 살펴봅니다. Candidate가 없거나 제거·변경 목록이 예상과 다르면 설치하지 말고 저장소 및 의존성을 확인합니다.
sudo apt update
apt-cache policy php8.3-cli php8.3-fpm
apt-get -s install php8.3-cli php8.3-fpm
시험 서버에서 결과가 적절하면 설치하고 상태를 확인합니다. 아래 명령은 웹 서버가 PHP-FPM을 자동으로 사용하도록 설정하지 않습니다.
sudo apt install php8.3-cli php8.3-fpm
php8.3 -v
php8.3 -m
systemctl status php8.3-fpm --no-pager
예를 들어 MySQL 또는 MariaDB 연결이 필요한 앱이라면 해당 환경에서 php8.3-mysql을 별도로 검토합니다. 설정 파일과 확장은 CLI와 FPM에서 다를 수 있으므로 새 FPM의 설정과 서비스를 확인하세요. 패키지 설치 후 웹 서버의 FastCGI 설정을 시험 서버의 FPM 소켓에 맞추고, 웹 서버 설정 검사에 성공한 다음 다시 불러와야 합니다. Apache 모듈 방식은 별도 구성이며 FPM과 혼동하면 안 됩니다.
웹 적용 확인과 문제 발생 시 복구
CLI의 버전만으로 웹 사이트의 PHP 버전을 확인할 수는 없습니다. 웹 서버의 활성 설정과 FPM 서비스·로그를 확인하고, 접근이 제한된 시험 환경에서 애플리케이션의 상태 화면이나 관리 도구로 웹 요청이 새 PHP를 사용하는지 확인하세요. 상세한 서버 설정을 노출하는 phpinfo() 페이지를 공개된 위치에 남겨 두지 않습니다.
실제 전환 전에는 점검 시간, 데이터 동기화와 복구 시점을 정합니다. 서비스 전환 후 주요 기능과 웹 서버·PHP 오류 로그를 확인하세요. 문제가 있으면 미리 보관한 이전 웹 서버 연결 설정으로 되돌리고 설정 검사 후 다시 불러오거나, 전환 전 서버로 트래픽을 되돌립니다. 데이터베이스 구조가 변경됐다면 단순히 PHP 버전만 되돌려서는 복구되지 않을 수 있으므로 백업과 데이터 복원 계획을 함께 사용해야 합니다.
기존 외부 저장소와 전체 업그레이드에 주의
이 글의 이전 방법은 ppa:ondrej/php를 추가하고 apt-get upgrade를 실행했습니다. 외부 저장소의 Ubuntu 18.04 및 원하는 PHP 버전에 대한 현재 지원 여부는 공급자가 정하며, 저장소가 추가되었다는 사실만으로 보안 유지보수를 보장할 수 없습니다. apt-get upgrade는 PHP만이 아니라 업그레이드 가능한 다른 패키지에도 영향을 미칩니다.
운영 서버에서 저장소를 추가하거나 제거하기 전에 패키지 출처, 변경될 의존성, 복구 방법을 검토하세요. 웹 서버의 PHP 처리 방식도 별도로 확인해야 하며, 예전 PHP 모듈을 그대로 둔 채 다른 버전의 Apache 모듈만 활성화하는 방식은 구성 충돌을 일으킬 수 있습니다.




