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

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

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

발행: 2026년 8월 6일

## 요약

요약

PHP 8.0.22는 2022년 8월 2일 릴리스된 PHP 8.0 브랜치의 보안 및 버그 수정 업데이트입니다. CLI 내장 서버의 잠재적 오버플로우, FPM의 더블 프리(double free) 취약점, OPcache 무한 루프 버그 등 실무 환경에 직접 영향을 미치는 중요한 수정 사항이 포함되어 있습니다. 이 릴리스는 단독으로 보는 것이 아니라, 8.0.14부터 누적된 다수의 보안 패치(CVE 포함)와 함께 평가해야 합니다.


핵심 내용

🔒 보안 관련 수정 (누적 이력 포함)

PHP 8.0.22 단독 릴리스의 CVE는 명시되어 있지 않으나, 이전 버전에서 수정된 다음 CVE들이 8.0.22에 누적 포함되어 있습니다. 구버전을 사용 중이라면 이들 모두가 미패치 상태일 수 있습니다.

버전CVE대상 컴포넌트설명
8.0.20CVE-2022-31626Mysqlnd/PDO패스워드 버퍼 오버플로우
8.0.20CVE-2022-31625PgSQLpg_query_params() 미초기화 배열
8.0.16CVE-2021-21708Filterphp_filter_float() UAF(Use-After-Free)
8.0.13CVE-2021-21707XML경로 내 특수문자 처리 취약점

⚠️ MySQL/PostgreSQL을 사용하는 Laravel 프로젝트는 CVE-2022-31626과 CVE-2022-31625에 직접적으로 노출될 수 있습니다. 즉각적인 업그레이드가 권장됩니다.


🐛 8.0.22 주요 버그 수정 분석

CLI 내장 서버 — 오버플로우 위험

PHP_CLI_SERVER_WORKERS 환경 변수를 통한 잠재적 정수 오버플로우 수정
  • php artisan serve 또는 내장 서버를 사용하는 개발 환경에 영향
  • PHP_CLI_SERVER_WORKERS 값을 큰 정수로 설정한 경우 비정상 동작 가능성이 있었음
  • 프로덕션 환경에는 직접적 영향 없으나, 로컬 개발 환경 안정성 향상

FPM — 더블 프리 및 잘못된 주소 해제

- FPM zlog 메시지 prepend 시 잘못된 주소 free 수정
- 설정 로딩 실패 시 possible double free 수정
  • PHP-FPM + Nginx/Apache 조합을 사용하는 프로덕션 환경에서 FPM 프로세스가 예기치 않게 종료될 수 있는 문제
  • Laravel Sail, Docker 기반 배포 환경 모두 해당
  • php-fpm.conf 설정 오류 시 크래시로 이어질 수 있었던 문제 해결

OPcache — 무한 루프 (CPU 100% 점유)

Fixed bug GH-8847 (PHP hanging infinitely at 100% CPU when checking PHP syntax of a valid file)
  • OPcache가 활성화된 환경에서 문법적으로 유효한 PHP 파일 검사 시 CPU가 100%로 무한 점유되는 심각한 버그
  • php -l (syntax check) 또는 배포 자동화 스크립트에서 구문 검사를 수행하는 경우 직접 영향
  • CI/CD 파이프라인에서 배포가 무한 대기 상태에 빠질 수 있었음

Core — WeakMap TypeError

Fixed bug GH-8995 (WeakMap object reference offset causing TypeError)
  • PHP 8.0에서 도입된 WeakMap을 사용하는 코드에서 발생하는 TypeError
  • Laravel 9.x 내부에서도 WeakMap을 활용하는 경우가 있어 간접적인 영향 가능

Windows 환경 — 파일 잠금 문제

Fixed bug GH-8923 (error_log on Windows can hold the file write lock)
  • Windows 기반 개발 환경(WSL 비사용)에서 error_log 파일이 잠금 상태로 유지되어 로그 기록 실패 가능
  • Laravel의 Log 파사드 사용 시 간헐적 로그 누락 원인이 될 수 있었음

DBA — LMDB 드라이버 행(Hang) 현상

Fixed LMDB driver hanging when attempting to delete a non-existing key
  • LMDB를 캐시 드라이버로 사용하는 경우 존재하지 않는 키 삭제 시 프로세스가 멈추는 문제

📅 누적 수정 하이라이트 (8.0.14 ~ 8.0.21)

Date/Time 관련 (Laravel Carbon 영향 가능)

  • DatePeriod의 커스텀 DateTimeImmutable 경고 누락 수정 (8.0.22)
  • DST(일광절약시간) 타임존 오프셋 계산 오류 수정 (8.0.21)
  • 음수 연도의 요일 계산 오류 수정 (8.0.21)
  • timezone_open()이 잘못된 타임존 문자열을 수락하는 문제 (8.0.21)
  • CreateFromFormat 관련 널 바이트 인젝션 (8.0.20)

Laravel에서 Carbon을 통해 날짜/시간을 광범위하게 사용하므로, 특히 타임존 처리 관련 버그 수정은 실무 영향이 큽니다.

OpenSSL 관련

  • 여러 OpenSSL 함수에서 VCWD 무시 문제 수정 (8.0.21)
  • 인증서 관련 함수의 NULL 바이트 인젝션 수정 (8.0.21) — HTTPS/TLS 처리 시 보안 영향

OPcache JIT

  • JIT 크래시 및 타입 추론 오류 다수 수정 (8.0.15 ~ 8.0.17)
  • JIT 활성화 환경에서 배열 동작 이상 수정 (8.0.13)

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

호환성

  • PHP 8.0.22는 하위 호환성 파괴(Breaking Change) 없음 — 기존 Laravel 8.x, 9.x 프로젝트에서 즉시 업그레이드 가능
  • Laravel 9.x는 PHP 8.0 이상을 공식 지원하므로 직접 호환

업그레이드 난이도

  • 낮음 — 패치 버전(patch release)이므로 코드 변경 불필요
  • composer.json의 PHP 버전 제약이 ^8.0인 경우 Composer 의존성 변경 없이 시스템 PHP만 업그레이드

보안 긴급도

  • 높음 — CVE-2022-31626(Mysqlnd 버퍼 오버플로우), CVE-2022-31625(PgSQL 미초기화 배열)가 포함된 8.0.20 이전 버전 사용 중이라면 즉시 업그레이드 권장
  • MySQL/MariaDB, PostgreSQL을 사용하는 대부분의 Laravel 프로젝트가 해당됨

로컬 개발 환경별 참고사항

Laravel Valet (macOS)

# Homebrew를 통한 PHP 업그레이드brew upgrade php@8.0valet restart
  • macOS 관련 수정 사항: CCRandomGenerateBytes 사용으로 변경 (보안 강화), macOS ACL 빌드 수정 포함
  • Valet 사용자는 valet restartphp -v로 버전 확인 필요

Laravel Sail (Docker)

# sail/php80 이미지 최신 버전 확인 docker pull laravelsail/php80-composer:latest
  • docker-compose.yml에서 PHP 8.0 이미지를 사용하는 경우, 공식 이미지가 업데이트되었는지 확인
  • sail build --no-cache로 이미지 재빌드 권장

일반 Docker 환경

FROM php:8.0.22-fpm # 또는 FROM php:8.0-fpm # 항상 최신 8.0.x 사용
  • FPM 더블 프리 버그 수정으로 인해 프로덕션 PHP-FPM 컨테이너 재빌드 권장

Windows 개발 환경 (WSL2 비사용)

  • error_log 파일 잠금 문제가 수정되어 Laravel 로그 기록 안정성 향상
  • XAMPP, WampServer 사용자는 해당 플랫폼의 PHP 8.0.22 패키지 업데이트 확인 필요

CI/CD 파이프라인

  • OPcache 무한 루프 버그(GH-8847) 수정으로 인해 PHP syntax check를 포함한 CI 파이프라인의 무한 대기 현상이 해소될 수 있음
  • GitHub Actions, GitLab CI에서 php -l 명령을 사용하는 경우 해당

실무 체크리스트

로컬 개발 환경

  • 현재 PHP 버전 확인: php -v
  • 8.0.22 미만인 경우 업그레이드 진행
    • macOS (Homebrew): brew upgrade php@8.0 && valet restart
    • Ubuntu/Debian: sudo apt-get update && sudo apt-get install php8.0
    • Ondřej PPA 사용 시: sudo add-apt-repository ppa:ondrej/php && sudo apt-get update && sudo apt-get install php8.0
  • 업그레이드 후 버전 재확인: php -v
  • Laravel 개발 서버 정상 동작 확인: php artisan serve
  • php artisan 명령 전반 정상 동작 확인

스테이징 환경

  • PHP 8.0.22로 업그레이드
  • FPM 재시작: sudo systemctl restart php8.0-fpm
  • OPcache 설정 확인 (opcache.enable=1 환경에서 특히 주의)
  • 애플리케이션 로그에 FPM 관련 에러 없는지 확인
  • 날짜/시간 관련 기능 테스트 (DST 타임존, DatePeriod 사용 코드)
  • MySQL/PostgreSQL 연결 및 쿼리 정상 동작 확인 (CVE 패치 검증)
  • 자동화 테스트 스위트 전체 실행: php artisan test

프로덕션 환경

  • 배포 전 반드시 스테이징에서 검증 완료
  • 현재 PHP 버전이 8.0.20 미만이라면 보안 패치(CVE-2022-31626, CVE-2022-31625) 포함 여부 확인 — 즉시 업그레이드 권장
  • 배포 계획 수립 (무중단 배포 또는 점검 시간 확보)
  • PHP 업그레이드:
    # Ubuntu/Debian with Ondřej PPAsudo apt-get install php8.0=8.0.22*# 버전 고정 해제 후 업그레이드가 필요한 경우sudo apt-mark unhold php8.0sudo apt-get upgrade php8.0
  • PHP-FPM 재시작 및 상태 확인:
    sudo systemctl restart php8.0-fpmsudo systemctl status php8.0-fpm
  • 웹 서버(Nginx/Apache) 재시작 또는 reload
  • 애플리케이션 헬스체크 엔드포인트 확인
  • 에러 로그 모니터링 (최소 30분): tail -f /var/log/php8.0-fpm.log
  • OPcache 캐시 초기화 (필요 시):
    // 배포 스크립트 또는 artisan command opcache_reset();
  • Docker 사용 시: 이미지 재빌드 및 컨테이너 교체 배포

추가 확인 사항

  • phpinfo() 또는 php -v로 프로덕션 반영 버전 최종 확인
  • PHP 8.0 EOL(End of Life) 일정 인지: 2023년 11월 26일 — 장기 계획으로 PHP 8.1 또는 8.2 마이그레이션 검토 권장
  • 팀 내 PHP 버전 관리 정책 문서 업데이트

참고: PHP 8.0은 2023년 11월에 공식 지원이 종료됩니다. 8.0.22가 마지막 주요 패치 릴리스 중 하나일 수 있으므로, PHP 8.1 또는 8.2로의 마이그레이션 계획을 지금부터 수립하는 것을 권장합니다.