← PHP 소식
PHP 8.4.23보안

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

  • gototry/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.xPHP 8.2 이상 지원, 8.4.23 완전 호환
Laravel 11.xPHP 8.2 이상 지원, 8.4.23 완전 호환
Phar 관련Artisan 및 패키지 배포에 Phar를 사용하는 경우 이번 Phar 보안 수정 적용이 중요합니다
OpenSSLopenssl_encrypt() 사용 로직(암호화, JWT 등)이 있다면 반드시 업그레이드하십시오
BCMathLaravel 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 restart

Laravel 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-fpm
docker pull php:8.4-fpmdocker compose up -d --build

🧪 스테이징 환경

  1. PHP 버전 업그레이드 후 기존 테스트 스위트 전체 실행
  2. phpunit, pest 테스트가 모두 통과하는지 확인
  3. 이미지 처리(GD), 암호화(OpenSSL), BCMath 관련 기능 중점 테스트
  4. 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-fpm

CentOS / 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

php.net 공식 릴리스 노트 보기 →