업데이트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.20 | CVE-2022-31626 | Mysqlnd/PDO | 패스워드 버퍼 오버플로우 |
| 8.0.20 | CVE-2022-31625 | PgSQL | pg_query_params() 미초기화 배열 |
| 8.0.16 | CVE-2021-21708 | Filter | php_filter_float() UAF(Use-After-Free) |
| 8.0.13 | CVE-2021-21707 | XML | 경로 내 특수문자 처리 취약점 |
⚠️ 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 restart후php -v로 버전 확인 필요
Laravel Sail (Docker)
# sail/php80 이미지 최신 버전 확인
docker pull laravelsail/php80-composer:latestdocker-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
- macOS (Homebrew):
- 업그레이드 후 버전 재확인:
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로의 마이그레이션 계획을 지금부터 수립하는 것을 권장합니다.