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

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

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

발행: 2026년 8월 6일

## 요약

요약

PHP 8.0.20은 2022년 6월 9일에 릴리스된 보안 패치 버전으로, mysqlnd의 패스워드 버퍼 오버플로우(CVE-2022-31626)와 PostgreSQL 확장의 초기화되지 않은 배열 문제(CVE-2022-31625) 등 2개의 CVE가 포함되어 있습니다. MySQL 또는 PostgreSQL을 사용하는 Laravel 애플리케이션이라면 즉각적인 업그레이드가 필요합니다. CLI, FPM, OPcache, SPL 등 다양한 컴포넌트의 안정성 버그도 함께 수정되었습니다.


핵심 내용

🔴 보안 취약점 (즉시 조치 필요)

CVE-2022-31626 — mysqlnd 패스워드 버퍼 오버플로우

  • 영향 범위: mysqlnd 드라이버를 사용하는 모든 MySQL/MariaDB 연결
  • 위험도: 악의적인 MySQL 서버가 클라이언트(PHP)에 과도하게 긴 패스워드 응답을 보내 힙 버퍼 오버플로우를 유발할 수 있습니다.
  • Laravel 관련성: Laravel의 기본 MySQL 드라이버(pdo_mysql)는 내부적으로 mysqlnd를 사용합니다. 신뢰할 수 없는 MySQL 서버에 연결하는 시나리오(멀티테넌트, 외부 DB 연동 등)에서 특히 위험합니다.
  • 보고자: c dot fol at ambionics dot io (보안 전문 연구팀)

CVE-2022-31625 — pgsql 확장의 초기화되지 않은 배열

  • 영향 범위: pg_query_params() 함수 사용 시 초기화되지 않은 배열이 노출될 수 있습니다.
  • Laravel 관련성: Laravel에서 PostgreSQL을 데이터베이스로 사용하는 경우, 특히 DB::select() 또는 Raw 쿼리에서 파라미터 바인딩을 사용할 때 영향을 받을 수 있습니다.
  • 보고자: cmb (PHP 코어팀)

🟡 주요 안정성 버그 수정

PHP-FPM 관련

  • Bug #72185: PHP-FPM이 빈 FastCGI 레코드를 전송하여 nginx 502 오류를 유발하던 버그가 수정되었습니다.
    • Laravel + nginx + PHP-FPM 조합을 사용하는 환경에서 간헐적으로 발생하던 502 오류의 원인 중 하나였을 수 있습니다.

CLI 관련

  • GH-8575: CLI가 표준 스트림(stdin/stdout/stderr)을 너무 일찍 닫는 버그 수정.
    • php artisan 명령어를 파이프라인이나 셸 스크립트에서 사용할 때 발생할 수 있었던 문제입니다.

Date 관련

  • GH-8471: 리플렉션으로 생성된 불변/가변 DateTime 인스턴스 변환 시 세그폴트 수정.
    • Laravel의 Carbon 라이브러리가 내부적으로 DateTime을 사용하므로 간접적인 영향이 있을 수 있습니다. (단, 리플렉션을 통한 DateTime 생성은 일반적인 경우는 아닙니다.)

OPcache 관련

  • GH-8466: 존재하지 않는 옵션에 대해 ini_get()이 최적화 과정에서 제거(optimized out)되는 버그 수정.
    • OPcache를 활성화한 프로덕션 환경에서 ini_get()으로 PHP 설정을 동적으로 확인하는 코드가 의도치 않게 false를 반환할 수 있었습니다.

SPL 관련

  • GH-8235: iterator_count()가 무한 루프에 빠질 수 있던 버그 수정.
    • LazyCollection이나 커스텀 Iterator를 사용하는 경우 주의가 필요했던 부분입니다.

SOAP 관련

  • GH-8578: SoapHeader 생성자에 잘못된 파라미터 전달 시 오류 발생 버그 수정.
  • GH-8538: SoapClient가 nmtoken의 일부를 잘라내는 버그 수정.
    • 전자정부 프레임워크나 금융권 SOAP API 연동 시 영향이 있을 수 있습니다.

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

데이터베이스 연동 환경

  • MySQL/MariaDB 사용자: CVE-2022-31626은 mysqlnd 버퍼 오버플로우로, Laravel의 기본 DB 드라이버 경로에 직접 영향을 줍니다. 프로덕션 업그레이드를 즉시 진행해야 합니다.
  • PostgreSQL 사용자: CVE-2022-31625 역시 즉각적인 패치가 필요합니다. Supabase 등 외부 PostgreSQL 서비스를 연동하는 경우도 해당됩니다.

호환성

  • PHP 8.0.x 마이너 버전 간 업그레이드이므로 하위 호환성 파괴 변경 없음.
  • Laravel 8.x, 9.x 모두 PHP 8.0을 지원하므로 코드 변경 없이 PHP만 업그레이드하면 됩니다.

로컬 개발 환경

환경업그레이드 방법비고
Laravel Valet (macOS)brew upgrade php@8.0 또는 brew upgrade phpHomebrew tap 확인 필요
Laravel Sail (Docker)docker pull php:8.0.20-fpm 또는 sail build --no-cachedocker-compose.yml의 PHP 이미지 태그 확인
Docker 직접 사용FROM php:8.0.20-fpm 으로 Dockerfile 수정 후 재빌드Docker Hub에 8.0.20 이미지 공개 여부 확인
서버 직접 운영apt upgrade php8.0 (Ubuntu/Debian) 또는 yum update php80 (CentOS/RHEL)ondrej/php PPA 등 사용 시 해당 저장소 업데이트 확인

SOAP API 연동 (국내 특이 사항)

  • 국내에서는 공공기관 API, 금융결제원, 세금계산서 서비스 등 SOAP 기반 API 연동이 여전히 많습니다.
  • 이번 릴리스에서 SoapClient nmtoken 처리 버그(GH-8538)와 SoapHeader 생성자 버그(GH-8578)가 수정되어 일부 안정성이 개선되었습니다.

nginx + FPM 환경

  • Bug #72185(FPM 빈 FastCGI 레코드 → nginx 502)가 수정되어, 간헐적인 502 오류를 경험했던 환경에서는 업그레이드 후 개선 여부를 모니터링할 것을 권장합니다.

실무 체크리스트

로컬 환경

  • 현재 PHP 버전 확인: php -v
  • Homebrew(macOS): brew update && brew upgrade php@8.0
  • Valet 사용 시: valet restart 실행 후 php -v로 버전 재확인
  • Sail/Docker: docker-compose.yml 또는 Dockerfile에서 PHP 이미지 태그를 8.0.20으로 업데이트 후 sail build --no-cache
  • 로컬에서 php artisan test 또는 ./vendor/bin/phpunit 실행하여 기본 테스트 통과 확인

스테이징 환경

  • 패키지 관리자(apt/yum)로 PHP 업그레이드 후 php -v로 버전 확인
  • PHP-FPM 서비스 재시작: sudo systemctl restart php8.0-fpm
  • nginx 502 오류 로그 모니터링 (Bug #72185 수정 효과 확인)
  • MySQL/PostgreSQL 연결 테스트: php artisan db 또는 php artisan tinkerDB::select('SELECT 1')
  • OPcache 사용 시 캐시 초기화: php artisan opcache:clear (패키지 사용 시) 또는 PHP-FPM 재시작
  • SOAP API 연동 기능이 있다면 해당 엔드포인트 통합 테스트 수행
  • ini_get() 의존 코드가 있다면 OPcache 환경에서 반환값 정상 확인 (GH-8466 관련)

프로덕션 환경

  • 점검 시간 또는 배포 파이프라인에서 업그레이드 진행 (무중단 배포 환경이라도 PHP-FPM 재시작 필요)
  • 배포 전 스테이징에서 충분한 검증 완료 여부 확인
  • PHP 업그레이드: 서버 OS에 맞는 패키지 관리자 사용
    # Ubuntu/Debian (ondrej/php PPA 사용 시) sudo apt update && sudo apt upgrade php8.0 php8.0-fpm php8.0-mysql php8.0-pgsql # PHP-FPM 재시작 sudo systemctl restart php8.0-fpm # 버전 확인 php -v
  • 배포 직후 에러 로그(storage/logs/laravel.log) 및 서버 에러 로그(/var/log/nginx/error.log) 모니터링
  • APM(New Relic, Datadog, Sentry 등) 사용 중이라면 배포 마킹 후 오류율 및 응답시간 모니터링
  • CVE 대응 기록: 보안 패치 적용 일시 및 담당자를 내부 보안 관리 문서에 기록 (ISO 27001, ISMS 등 인증 기관 요구사항 대응)
  • 향후 PHP 8.0 EOL(End of Life) 일정 확인 — PHP 8.0은 2023년 11월 26일 Active Support가 종료될 예정이므로, PHP 8.1 또는 8.2 마이그레이션 계획 수립 권장

⚠️ 주의: 이 문서는 초안(Draft)입니다. 실제 적용 전 공식 PHP 릴리스 노트(https://www.php.net/releases/8_0_20.php) 및 각 환경의 패키지 관리자 업데이트 가용 여부를 반드시 재확인하세요.