PHP 8.4.23 업데이트 안내
릴리스: 2026년 7월 2일
게시: 2026년 7월 3일
PHP 8.4.23 릴리스 공지 🔐
PHP 8.4.23 릴리스 공지 🔐
요약
PHP 8.4.23이 보안 태그와 함께 출시되었습니다. 이번 릴리스는 GD, OpenSSL, Phar, BCMath 등 다양한 핵심 익스텐션에서 발생하던 메모리 안전성 문제와 버그를 수정합니다. 모든 PHP 8.4.x 사용자는 가능한 한 빠르게 업그레이드할 것을 권장합니다.
⚠️ 보안 릴리스입니다. 이전 8.4.21 릴리스에 다수의 CVE가 포함되어 있었으므로, 아직 최신 버전으로 업그레이드하지 않은 경우 즉시 업그레이드하십시오.
주요 변경 사항
🔴 보안 관련 수정
- Phar:
Phar::addEmptyDir()에서/.phar로 시작하는 경로를 통한 매직.phar디렉터리 보호 우회 취약점 수정 - GD:
gdImageSetStyle()에서 오버플로 발생 후 이중 해제(Double Free) 버그 수정 (GH-22121) - OpenSSL: AES-WRAP-PAD 알고리즘 사용 시
openssl_encrypt()에서 발생하는 메모리 손상(zend_mm_heap corrupted) 수정 (GH-22187) - BCMath:
bcround()및BcMath\Number::round()에서의 과도한 메모리 할당 및 부호 있는 정수 오버플로 수정
🟠 Core
goto가try/finally블록 앞의 레이블로 이동 시 발생하던 잘못된 컴파일 오류 수정 (GH-22280)
🟡 익스텐션별 버그 수정
GD
imageconvolution()에서 예상치 못한 NaN 필터 값 처리 오류 수정 (GH-19666)imageellipse()/imagefilledellipse()정수 오버플로 수정 (GH-19739)imageaffine()정수 오버플로 수정 (GH-19730)
Intl
IntlCalendar::equals(),::before(),::after(),::isEquivalentTo()에서 초기화되지 않은 캘린더 인자의 잘못된 위치 처리 수정IntlTimeZone::getDisplayName()이 잘못된 표시 타입에 대해 객체 오류 상태를 동기화하지 않던 문제 수정Spoofchecker제한 수준 API가 ICU 53 이상에서만 노출되도록 수정
Opcache
- 재진입 오토로딩과 함께 발생하던 안전하지 않은 상속 캐시 재실행 버그 수정 (GH-20469)
Date
DatePeriod::createFromISO8601String()의 잘못된 반복 횟수 확인 로직 수정
DOM
Dom\XMLDocument::schemaValidate()가 임포트된 스키마에서 접두사가 있는xs:QName을 올바르게 해석하지 못하던 문제 수정 (GH-22219)
Exif
- single 및 double 태그에 대한 올바른 값 읽기 수정
mysqli
mysqli_execute_query()유효성 검사 오류 시stmt->query메모리 누수 수정
Reflection
ReflectionClass::getProperty()오류 메시지 및 오토로딩 시 클래스명 대소문자 보존
SQLite
- 컬럼 조회에 대한 오류 검사 수정
Zlib / Zip
- deflate 초기화 실패 시 및
inflate_add()에서 메모리 누수 수정 - 오류 관련 메모리 누수 수정
Laravel 개발자에게 미치는 영향
보안 업그레이드 긴급도
PHP 8.4.21에서 다수의 CVE(DOM, FPM, MBString, SOAP, Standard 등)가 패치되었으며, 8.4.23에서는 Phar 우회 취약점, OpenSSL 메모리 손상, GD 이중 해제 등 추가적인 보안 이슈가 해결되었습니다. 아직 8.4.21 미만 버전을 사용 중이라면 즉각적인 업그레이드가 필요합니다.
Laravel 호환성 고려사항
| 항목 | 내용 |
|---|---|
| Laravel 12.x | PHP 8.2 이상 지원, 8.4.23 완전 호환 |
| Laravel 11.x | PHP 8.2 이상 지원, 8.4.23 완전 호환 |
| Phar 관련 | Artisan 및 패키지 배포에 Phar를 사용하는 경우 이번 Phar 보안 수정 적용이 중요합니다 |
| OpenSSL | openssl_encrypt() 사용 로직(암호화, JWT 등)이 있다면 반드시 업그레이드하십시오 |
| BCMath | Laravel Cash, 결제 모듈 등 bcround() 사용 코드에서 오버플로 위험이 해소됩니다 |
| GD | 이미지 업로드 및 처리 기능을 사용하는 경우 GD 이중 해제 버그 수정이 안정성을 향상시킵니다 |
composer.json PHP 제약 확인
"require": {
"php": "^8.2 || ^8.3 || ^8.4"
}PHP 8.4.x를 명시적으로 제한하고 있다면 ^8.4 또는 >=8.4.23으로 업데이트를 검토하십시오.
업그레이드 안내
🖥️ 로컬 개발 환경
Homebrew (macOS)
brew updatebrew upgrade phpphp -v # PHP 8.4.23 확인Laravel Valet
brew upgrade phpvalet restartLaravel Sail (Docker)
docker-compose.yml 또는 Sail의 Dockerfile에서 PHP 이미지를 최신으로 갱신합니다.
./vendor/bin/sail down./vendor/bin/sail build --no-cache./vendor/bin/sail up -d./vendor/bin/sail php -v # PHP 8.4.23 확인Docker (커스텀 이미지)
FROM php:8.4.23-fpmdocker pull php:8.4-fpmdocker compose up -d --build🧪 스테이징 환경
- PHP 버전 업그레이드 후 기존 테스트 스위트 전체 실행
phpunit,pest테스트가 모두 통과하는지 확인- 이미지 처리(GD), 암호화(OpenSSL), BCMath 관련 기능 중점 테스트
- FPM 재시작 후 상태 확인
sudo systemctl restart php8.4-fpm
php -v && php -m🚀 프로덕션 환경
Ubuntu / Debian (ondrej/php PPA)
sudo apt updatesudo apt upgrade php8.4 php8.4-fpm php8.4-clisudo systemctl restart php8.4-fpmCentOS / RHEL (Remi 저장소)
sudo dnf update phpsudo systemctl restart php-fpm업그레이드 후 반드시 아래를 확인하십시오:
php -v
# PHP 8.4.23 (cli) ...
php -r "echo PHP_VERSION;"⚙️ CI/CD 매트릭스 업데이트
GitHub Actions 등 CI 파이프라인에서 PHP 버전 매트릭스를 사용하는 경우 업데이트하십시오.
# .github/workflows/tests.yml
jobs:
test:
strategy:
matrix:
php: ['8.2', '8.3', '8.4'] # 8.4는 8.4.23으로 자동 해석
steps:
- uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}📌 공식 릴리스 정보: https://www.php.net/releases/8.4/en.php
📌 전체 변경 이력: https://www.php.net/ChangeLog-8.php#8.4.23