PHP 7.4.5 업데이트 — 한국 Laravel 개발자 영향 분석
작성: 라라벨 코리아 (초안)
발행: 2026년 8월 6일
## 요약
요약
PHP 7.4.5는 2020년 4월 16일에 릴리스된 보안 업데이트로, 이전 버전(7.4.4 포함)에서 발견된 다수의 버그와 보안 취약점을 수정합니다. 특히 urldecode(), shell_exec(), shmop_open(), SOAP 관련 세그멘테이션 폴트 등 실무 환경에서 직접적인 영향을 줄 수 있는 심각한 문제들이 포함되어 있습니다. 보안 릴리스이므로 가능한 한 빠른 업그레이드가 강력히 권장됩니다.
핵심 내용
🔐 보안 관련 수정 사항 (최우선 검토)
PHP 7.4.5 자체 릴리스 노트 및 직전 버전(7.4.4)의 보안 수정 사항을 함께 파악해야 합니다.
PHP 7.4.5에서 수정된 보안/크리티컬 버그:
#79465—urldecode()에서의 OOB(Out-of-Bounds) 읽기 (Standard): URL 디코딩 과정에서 메모리 경계를 벗어난 읽기가 발생할 수 있습니다. 웹 입력을 처리하는 모든 Laravel 애플리케이션에 잠재적 영향이 있습니다.#79427—shmop_open()에서 정수 오버플로우 (Shmop): 공유 메모리를 사용하는 환경에서 정수 오버플로우로 인한 예기치 않은 동작이 발생할 수 있습니다.#79330—shell_exec()가 null 바이트 이후 내용을 조용히 잘라냄 (Standard): 외부 명령 실행 결과가 null 바이트 이후 데이터를 손실할 수 있습니다.Artisan명령 또는Symfony Process컴포넌트를 통한 쉘 명령 실행 시 주의가 필요합니다.#79410—system()이 정확히 4095바이트인 마지막 청크를 누락 (Standard)**: 특정 크기의 출력을 생성하는 시스템 명령에서 데이터가 누락될 수 있습니다.
PHP 7.4.4에서 수정된 CVE 등록 보안 취약점 (7.4.5 이전 버전 사용자는 반드시 확인):
| CVE | 컴포넌트 | 설명 |
|---|---|---|
CVE-2020-7064 | EXIF | 초기화되지 않은 값 사용 (Use-of-uninitialized-value) |
CVE-2020-7065 | MBString | mb_strtolower() UTF-32LE 처리 중 스택 버퍼 오버플로우 |
CVE-2020-7066 | Standard | get_headers()에서 null 바이트 이후 조용한 잘림 |
CVE-2020-7063 | Phar | Phar::buildFromIterator로 추가된 파일에 과도한 권한 설정 |
CVE-2020-7062 | Session | 세션 업로드 진행 중 Null 포인터 역참조 |
CVE-2020-7061 | Phar | phar_extract_file에서 힙 버퍼 오버플로우 |
⚠️ 중요: 7.4.3 이하를 사용 중인 경우 위 CVE들이 모두 패치되지 않은 상태입니다. 보안 위험도가 매우 높습니다.
🐛 Laravel 실무에 영향을 줄 수 있는 주요 버그 수정
Date / DateTime 관련
#79396— DST(일광절약시간) 전환 시 DateTime 시간이 잘못 계산되는 버그 수정: 타임존이 중요한 한국 서비스(예: 예약 시스템, 로그 타임스탬프, 스케줄러)에서Carbon이나DateTime을 활용할 때 DST가 있는 해외 타임존(America/New_York,Europe/London등)을 다루는 경우 이 버그의 영향을 받았을 수 있습니다.#74940—DateTimeZone느슨한 비교가 항상true를 반환하는 버그 수정: 타임존 객체를 비교하는 로직에서 잘못된 결과가 반환될 수 있었습니다.
OPcache 관련
#79412— 특정 스크립트에서 OPcache가 CPU를 100% 점유하는 버그 수정: 프로덕션 환경에서 OPcache를 활성화한 경우 특정 코드 패턴에서 서버가 응답 불능 상태가 될 수 있는 심각한 문제입니다.
SOAP 관련
#79357— SOAP 요청 파라미터 누락 시 세그멘테이션 폴트: Laravel에서 외부 SOAP API를 연동하는 경우, 요청 파라미터가 누락되었을 때 PHP 프로세스 자체가 종료될 수 있었습니다.
Session 관련
#79413— 활성 세션에서session_create_id()가 실패하는 버그 수정: Laravel의 세션 관리 로직 일부에서 세션 ID 생성이 실패할 수 있었습니다.
FPM 관련
#77062—listen.owner/listen.group설정에 숫자 UID/GID 허용 (기능 추가): Docker 환경 등에서 소켓 파일 권한 설정 시 숫자 ID를 직접 사용할 수 있어 컨테이너 환경 구성이 더 유연해졌습니다.
SPL / SimpleXML / Zip
#79393—SplFixedArray에서 Null 병합 연산자(??) 오작동: Laravel 코드에서??연산자를SplFixedArray와 함께 사용하는 경우 예상치 못한 결과가 발생했습니다.#79296—ZipArchive::open()이 빈 파일에서 실패: 업로드된 ZIP 파일 처리나 아카이브 생성 로직에 영향을 줄 수 있습니다.
한국 Laravel 개발자에게 미치는 영향
호환성
- PHP 7.4.5는 7.4.x 마이너 라인의 패치 릴리스로, 하위 호환성을 유지합니다. 코드 변경 없이 PHP 바이너리만 업데이트하면 됩니다.
- Laravel 6.x (LTS), 7.x 모두 PHP 7.4를 공식 지원하므로 즉시 업그레이드 가능합니다.
보안 긴급도
- 긴급(Critical): 7.4.3 이하 버전 사용 중인 경우, CVE-2020-7061 ~ 7066이 패치되지 않은 상태입니다. 특히 파일 업로드, 세션, 이미지 처리 기능이 있는 서비스는 즉각적인 업그레이드가 필요합니다.
- 높음(High): 7.4.4 사용 중인 경우에도
urldecode()OOB,shell_exec()null 바이트 트런케이션 등의 문제가 존재하므로 업그레이드를 권장합니다.
로컬 개발 환경별 업그레이드 방법
Laravel Valet (macOS)
# Homebrew를 통해 PHP 업그레이드brew upgrade php@7.4# Valet 재시작valet restartLaravel Sail (Docker)
docker-compose.yml 또는 Sail의 Dockerfile에서 PHP 이미지 버전을 확인하고, 최신 7.4 태그 이미지로 재빌드합니다.
# 이미지 재빌드./vendor/bin/sail build --no-cache# 컨테이너 재시작./vendor/bin/sail up -dSail은
laravelsail/php74-composer이미지를 기반으로 하므로, 이미지 업스트림에서 7.4.5가 반영되었는지 확인 후docker pull을 수행하세요.
일반 Docker 환경
# Dockerfile에서 명시적 버전 태그 확인 권장
FROM php:7.4.5-fpm-alpine
php:7.4-fpm태그는 자동으로 최신 패치 버전을 가리키지만, 명시적 버전 태그(7.4.5)를 사용하면 재현 가능한 빌드를 보장할 수 있습니다.
AWS/클라우드 서버 (Ubuntu/CentOS 계열)
# Ubuntu + ondrej/php PPAsudo apt-get updatesudo apt-get upgrade php7.4# PHP-FPM 재시작sudo systemctl restart php7.4-fpm실무 체크리스트
로컬 / 개발 환경
-
php -v명령으로 현재 PHP 버전 확인 - 7.4.5 미만인 경우 위의 환경별 업그레이드 절차 수행
- 업그레이드 후
php -v로7.4.5반영 확인 -
composer install/php artisan optimize:clear실행하여 캐시 초기화 - OPcache를 사용하는 경우
opcache_reset()또는 PHP-FPM 재시작으로 캐시 초기화 -
SOAP,ZipArchive,Session,SplFixedArray를 사용하는 기능 로컬 테스트
스테이징 환경
- 스테이징 서버 PHP 업그레이드 (운영과 동일한 방식으로)
-
php artisan test또는 PHPUnit 전체 테스트 스위트 실행 - 파일 업로드 기능(Phar, Zip, 이미지 EXIF 처리) 통합 테스트
- 세션 관련 기능 정상 동작 확인
- 외부 SOAP API 연동이 있는 경우 엔드-투-엔드 테스트
- 타임존 관련 로직(스케줄러, 예약 기능) 동작 확인
- OPcache 활성화 상태에서 전체 기능 회귀 테스트
프로덕션 환경
- 배포 전 스테이징 테스트 완료 여부 확인
- PHP-FPM 재시작 전 트래픽이 낮은 시간대(새벽) 선택 또는 Rolling 배포 계획 수립
- 업그레이드 전 현재 PHP 버전 및 설정 백업 (
php.ini, FPM pool 설정) - PHP 업그레이드 수행
- PHP-FPM 재시작 (
sudo systemctl restart php7.4-fpm) - 업그레이드 후
phpinfo()또는php -v로 버전 확인 (보안상phpinfo()노출 주의) - 애플리케이션 주요 엔드포인트 헬스체크 (응답 코드, 응답 시간)
- 에러 로그 모니터링 (
/var/log/php7.4-fpm.log, Laravelstorage/logs/) - Sentry, Bugsnag 등 에러 트래킹 도구에서 에러 급증 여부 모니터링 (최소 1시간)
- OPcache 사용 중인 경우 캐시 워밍업 확인
- Docker/Kubernetes 환경의 경우 새 이미지 태그로 Rolling Update 완료 확인
📝 편집자 주: 이 글은 공식 PHP 릴리스 노트를 기반으로 작성된 초안입니다. 각 CVE의 CVSS 점수 등 세부 보안 등급은 공식 NVD(https://nvd.nist.gov) 또는 PHP 보안 공지를 통해 추가로 확인하시기 바랍니다. 특정 호스팅 환경(카페24, 가비아 등)에서의 업그레이드 절차는 해당 호스팅사의 공식 가이드를 별도로 참조하세요.