← 아티클 목록
업데이트phplaravel업데이트

PHP 7.4.8 업데이트 — 한국 Laravel 개발자 영향 분석

작성: 라라벨 코리아 (초안)

발행: 2026년 8월 6일

## 요약

요약

PHP 7.4.8은 2020년 7월 9일 릴리스된 보안 및 버그 수정 업데이트입니다. 이전 마이너 버전(7.4.3~7.4.7)에 걸쳐 축적된 다수의 CVE 보안 취약점 패치가 포함되어 있으며, 메모리 오염, 세그멘테이션 폴트, 버퍼 오버플로우 등 심각도 높은 문제들이 수정되었습니다. Laravel 프로젝트를 운영 중인 개발자라면 가능한 한 빠른 업그레이드가 권장됩니다.


핵심 내용

🔐 보안 취약점 (CVE) 수정 이력 (7.4.3~7.4.5 누적)

PHP 7.4.8은 단독 릴리스이지만, 7.4.x 시리즈 전체의 보안 패치를 포함합니다. 아래 CVE들은 이전 마이너 릴리스에서 순차적으로 수정된 항목입니다.

CVE영향 버전수정 버전설명
CVE-2020-7061< 7.4.37.4.3Phar: phar_extract_file에서 heap-buffer-overflow
CVE-2020-7062< 7.4.37.4.3Session: 세션 업로드 진행 중 Null Pointer Dereference
CVE-2020-7063< 7.4.37.4.3Phar: tar 빌드 시 파일에 전체 접근 권한 부여
CVE-2020-7064< 7.4.47.4.4EXIF: 초기화되지 않은 메모리 값 사용
CVE-2020-7065< 7.4.47.4.4MBString: mb_strtolower (UTF-32LE)에서 스택 버퍼 오버플로우
CVE-2020-7066< 7.4.47.4.4Standard: get_headers()에서 null 바이트 이후 데이터 무단 절단
CVE-2020-7067< 7.4.57.4.5Standard: urldecode()에서 OOB(범위 초과) 읽기

⚠️ 7.4.7 이하 버전을 사용 중이라면 위 CVE 취약점에 노출되어 있습니다. 특히 파일 업로드, URL 처리, 다국어(한국어 포함) 문자열 처리를 수행하는 Laravel 애플리케이션은 직접적인 영향을 받을 수 있습니다.


🐛 주요 버그 수정 (7.4.8 기준)

Core

  • disable_functions 메모리 오염 (버그 #79649): 모듈 초기화 시 disable_functions를 변경할 때 메모리가 손상되는 문제 수정. 커스텀 php.ini 설정을 사용하는 환경에서 예상치 못한 크래시를 유발할 수 있었습니다.
  • yield from 무한 대기 (버그 #79657): 제너레이터에서 잘못된 값이 입력될 때 프로세스가 무한 대기 상태에 빠지는 문제 수정. 큐(Queue) 작업이나 배치 처리에서 Generator를 활용하는 Laravel 코드에 영향을 미칠 수 있습니다.
  • get_defined_functions(true) 함수 누락 (버그 #79668): 일부 함수가 목록에서 누락되는 회귀 버그 수정.

Filter

  • php_filter_strip 잘못된 메모리 접근 (버그 #73527): FILTER_SANITIZE_* 계열 함수 사용 시 메모리 오염 가능성. Laravel의 request()->input() 필터링 레이어와 연관될 수 있습니다.

SPL

  • SplFileObject GC 중 세그멘테이션 폴트 (버그 #79710): error_handler 내에서 가비지 컬렉션과 SplFileObject가 동시에 관여할 때 발생하는 재현 가능한 세그폴트 수정. 로그 처리나 파일 기반 작업에서 예기치 않은 프로세스 종료를 방지합니다.

Fileinfo

  • 잘못된 MIME 타입 반환 (버그 #79681): mime_content_type()finfo가 잘못된 MIME 타입을 반환하는 문제 수정. Laravel의 파일 업로드 유효성 검증(mimes, mimetypes 규칙)에 영향을 줄 수 있습니다.

PDO SQLite

  • 빈 결과셋에서 getColumnMeta() 실패 (버그 #79664): SQLite를 테스트 환경(:memory:)으로 사용하는 Laravel 프로젝트에서 특정 조건의 쿼리가 실패하는 문제 수정.

OpenSSL

  • default_socket_timeout=-1 연결 타임아웃 (버그 #62890): 타임아웃을 -1(무제한)로 설정했음에도 연결이 끊기는 문제 수정. 외부 API 연동, HTTP Client(Guzzle) 사용 시 관련될 수 있습니다.

📦 이전 마이너 버전의 주목할 만한 변경 사항

PHP 7.4.6 — PCRE2 10.34 업그레이드

정규표현식 엔진이 PCRE2 10.34로 업그레이드되었습니다. Laravel의 라우팅, 유효성 검사, preg_* 함수를 광범위하게 사용하는 경우 동작 변경 여부를 확인하세요.

PHP 7.4.5 — shell_exec() null 바이트 처리

shell_exec()이 null 바이트 이후 데이터를 무단으로 절단하는 문제가 수정되었습니다. 외부 명령어 실행 결과를 처리하는 코드에서 잠재적인 보안 관련 동작이 변경됩니다.

PHP 7.4.4 — MBString UTF-32LE 스택 오버플로우 (CVE-2020-7065)

한국어를 포함한 멀티바이트 문자열을 mb_strtolower()로 처리할 때 스택 버퍼 오버플로우가 발생할 수 있었습니다. 한국어 처리가 포함된 애플리케이션은 특히 주의가 필요합니다.


한국 Laravel 개발자에게 미치는 영향

호환성

PHP 7.4.8은 7.4.x 시리즈 내의 패치 업데이트로, 하위 호환성을 유지합니다. Laravel 6.x(LTS), 7.x 프로젝트는 별도의 코드 수정 없이 PHP 버전만 업그레이드하면 됩니다.

한국어 처리 관련 주의 (MBString CVE-2020-7065)

mb_strtolower() 함수의 UTF-32LE 처리 취약점은 한국어 문자열을 다루는 애플리케이션에 직접적인 영향을 줄 수 있습니다. PHP 내부적으로 문자셋 변환이 일어나는 경우(예: mb_convert_encoding(), mb_strtolower() 조합)에 해당 취약점이 트리거될 수 있으므로 7.4.4 이상 버전 적용이 필수입니다.

업그레이드 난이도

  • 낮음: 7.4.x → 7.4.8은 패치 버전 업그레이드이므로 Breaking Change가 없습니다.
  • 다만 PHP 7.4.6에서 PCRE2 엔진이 업그레이드되었으므로, 복잡한 정규표현식을 사용하는 경우 스테이징 환경에서 사전 검증이 권장됩니다.

로컬 개발 환경별 업그레이드 방법

Laravel Valet (macOS)

# Homebrew를 통한 PHP 업그레이드brew updatebrew upgrade php@7.4# Valet 재시작valet restart

Laravel Sail (Docker)

docker-compose.yml에서 PHP 이미지를 7.4.8 이상이 포함된 최신 이미지로 변경 후 재빌드합니다.

# 이미지 재빌드./vendor/bin/sail build --no-cache./vendor/bin/sail up -d

직접 관리하는 Docker 환경

# Dockerfile 예시 FROM php:7.4.8-fpm-alpine

공식 PHP Docker 이미지(php:7.4-fpm)를 사용하는 경우, docker pull로 최신 패치 이미지를 받아야 합니다.

운영 서버 (Ubuntu/Debian — Ondřej PPA)

sudo apt-get updatesudo apt-get install --only-upgrade php7.4php -v  # PHP 7.4.8 

보안 긴급도

높음. CVE-2020-7061(Phar 버퍼 오버플로우), CVE-2020-7062(세션 Null Pointer Dereference), CVE-2020-7065(MBString 스택 오버플로우)는 원격 악용 가능성이 있는 취약점입니다. 인터넷에 노출된 프로덕션 서버는 즉시 업그레이드를 진행해야 합니다.


실무 체크리스트

로컬 / 개발 환경

  • php -v 명령어로 현재 버전 확인
  • PHP 7.4.8로 업그레이드 수행 (Homebrew, PPA, Docker 등 환경에 맞게)
  • php -m으로 기존 확장 모듈이 정상 로드되는지 확인
  • 프로젝트에서 mb_strtolower(), mb_convert_encoding() 사용 여부 확인
  • 정규표현식(preg_match, preg_replace 등) 집중 사용 기능 테스트 (PCRE2 10.34 업그레이드 영향)
  • mime_content_type() 또는 Laravel mimes 유효성 검사 규칙 사용 기능 테스트
  • yield / yield from 제너레이터를 사용하는 코드 테스트

스테이징 환경

  • PHP 7.4.8 배포 후 전체 PHPUnit 테스트 스위트 실행
  • 파일 업로드 기능 엔드-투-엔드 테스트 (MIME 타입 감지 버그 수정 영향)
  • 한국어 문자열 처리 기능 통합 테스트
  • SQLite를 테스트 DB로 사용하는 경우, getColumnMeta() 관련 테스트 확인
  • 외부 HTTP API 연동 기능 테스트 (OpenSSL 타임아웃 수정 영향)
  • php-fpm 설정(disable_functions 등) 적용 후 정상 구동 확인
  • Opcache 활성화 상태에서 애플리케이션 정상 동작 확인

프로덕션 환경

  • 점진적 배포(Blue-Green 또는 롤링 업데이트) 전략 적용 권장
  • 업그레이드 전 현재 PHP 버전 및 설정(php.ini) 백업
  • 업그레이드 후 php -v로 버전 확인
  • php-fpm 또는 웹 서버(Nginx/Apache) 재시작
  • Opcache 캐시 초기화: opcache_reset() 또는 php-fpm 재시작
  • 애플리케이션 에러 로그 모니터링 (업그레이드 후 최소 30분)
  • composer check-platform-reqs로 Composer 패키지 플랫폼 요구사항 재확인

참고: PHP 7.4 브랜치는 2022년 11월 28일 공식 지원이 종료(End of Life)됩니다. 현재 PHP 7.4.8로 업그레이드하더라도, 중장기적으로 PHP 8.0 또는 8.1로의 마이그레이션 계획을 수립하는 것을 권장합니다.