PHP 7.2.25 업데이트 — 한국 Laravel 개발자 영향 분석
작성: 라라벨 코리아 (초안)
발행: 2026년 8월 6일
## 요약
요약
PHP 7.2.25는 2019년 11월 21일에 릴리즈된 PHP 7.2 브랜치의 보안 및 버그 수정 릴리즈입니다. OpCache 손상, OpenSSL TLS 연결 문제, 제너레이터 관련 세그폴트 등 실무에 직접 영향을 줄 수 있는 버그들이 수정되었습니다. 특히 이전 버전인 7.2.24에 포함된 CVE-2019-11043(FPM RCE 취약점) 패치를 아직 적용하지 않은 환경이라면 즉시 업그레이드가 필요합니다.
핵심 내용
🔴 보안 관련 (이전 버전 포함 누적 확인 필수)
PHP 7.2.25 자체에는 별도로 지정된 CVE가 없지만, 7.2.24 이하 버전에서 이전된 심각한 보안 취약점이 존재하므로 반드시 확인이 필요합니다.
- CVE-2019-11043 (PHP 7.2.24):
fpm_main.c의env_path_info언더플로우로 인한 원격 코드 실행(RCE) 취약점. Nginx + PHP-FPM 조합에서 특정 URL 패턴으로 공격 가능. CVSS 점수가 매우 높아 즉각적인 패치가 요구됩니다. - CVE-2019-11042 / CVE-2019-11041 (PHP 7.2.21): EXIF 처리 중 힙 버퍼 오버플로우. 이미지 업로드 기능이 있는 서비스에서 위험.
- CVE-2019-11040 / CVE-2019-11039 / CVE-2019-11038 / CVE-2019-11036 / CVE-2019-11035 / CVE-2019-11034: EXIF, GD, Iconv 등에서 발생하는 힙 버퍼 오버플로우 및 범위 초과 읽기.
⚠️ 현재 PHP 7.2.23 이하를 사용 중이라면 CVE-2019-11043 RCE 취약점에 노출된 상태입니다. 즉시 7.2.25로 업그레이드하세요.
🟠 PHP 7.2.25의 주요 버그 수정
Core
- Bug #78752: GC(가비지 컬렉션)가 제너레이터 스택 프레임 소멸 중에 트리거될 때 세그폴트 발생 수정.
yield를 활용하는 Laravel 큐 워커, Artisan 커맨드, 스트림 처리 코드에서 간헐적 크래시를 경험했다면 이 버그가 원인일 수 있습니다. - Bug #78656: 파스(parse) 오류가 가장 높은 로그 레벨로 분류되던 문제 수정. 로그 모니터링 알람이 과도하게 발생했을 수 있습니다.
- Bug #78689:
Closure::fromCallable()이[Closure, '__invoke']형태를 처리하지 못하던 문제 수정.
OpCache
- Bug #78654: 비ASCII 문자(한글 포함)가 포함된 파일에서 OpCache 체크섬이 잘못 계산되는 문제 수정. 한국어 주석이나 문자열이 포함된 PHP 파일에서 OpCache가 올바르게 동작하지 않았을 가능성이 있습니다.
- Bug #78747: OpCache가 커스텀 확장 모듈의 결과를 손상시키는 문제 수정.
OpenSSL
- Bug #78775: HTTP 요청의 TLS 문제가 다른 암호화 연결에 영향을 주는 문제 수정. 동일 프로세스 내 다중 HTTPS 요청을 처리하는 환경(예: Guzzle을 통한 외부 API 호출)에서 간헐적 연결 실패를 경험했다면 이 버그와 관련이 있을 수 있습니다.
Date
- Bug #78751:
DatePeriod직렬화 시DateTimeImmutable이DateTime으로 변환되는 문제 수정. Laravel의 Carbon 기반 날짜 직렬화 코드에 잠재적 영향. - Bug #70153:
DateInterval역직렬화 오류 수정.
Sockets
- Bug #78665: 멀티캐스팅 시 메모리 누수 수정. 소켓 기반의 실시간 기능을 사용하는 경우 관련됩니다.
🟡 PHP 7.2.24 주요 버그 수정 (미적용 시 추가 확인)
- Bug #76809 (MySQLi): 영구적(persistent) 연결 사용 시 SSL 설정이 무시되는 문제 수정. DB 연결에 SSL을 사용하는 프로덕션 환경에서 중요합니다.
- Bug #78623 (PDO_MySQL): 스토어드 프로시저 호출 시 빈 결과 셋이 추가로 반환되던 회귀 버그 수정.
- Bug #76342 (Standard):
file_get_contents가 지정된 타임아웃의 두 배를 대기하는 버그 수정. 외부 API 연동 시 타임아웃 설정이 의도대로 동작하지 않았을 수 있습니다.
한국 Laravel 개발자에게 미치는 영향
호환성 및 Laravel 버전
| PHP 버전 | 지원 Laravel 버전 | 비고 |
|---|---|---|
| PHP 7.2.x | Laravel 5.6 ~ 6.x | Laravel 7+ 부터는 PHP 7.2.5 이상 필요 |
PHP 7.2.25는 마이너 패치 릴리즈로 하위 호환성이 완전히 유지됩니다. API 변경이나 기능 추가 없이 버그 수정만 포함되어 있어 업그레이드 리스크가 낮습니다.
Laravel 실무 영향 분석
-
OpCache 비ASCII 문자 체크섬 버그 (#78654)
- 한국어 주석(예:
// 사용자 인증 처리)이나 다국어 문자열 리터럴이 포함된 PHP 파일에서 OpCache가 잘못된 체크섬을 계산할 수 있었습니다. - 배포 후
php artisan opcache:clear또는 서버 재시작을 해도 캐시가 예상과 다르게 동작하는 문제의 원인일 수 있습니다. - 업그레이드 후 OpCache를 반드시 초기화하세요.
- 한국어 주석(예:
-
제너레이터 세그폴트 (#78752)
- Laravel 큐 워커(
php artisan queue:work)는 내부적으로 제너레이터 패턴을 사용합니다. 장시간 실행되는 워커 프로세스에서 간헐적 크래시가 발생했다면 이 버그가 원인일 수 있습니다. - Supervisor로 관리되는 큐 워커 환경에서도 잦은 재시작이 발생했다면 확인이 필요합니다.
- Laravel 큐 워커(
-
OpenSSL TLS 연결 오염 (#78775)
- Laravel에서 Guzzle HTTP 클라이언트나
Http::파사드를 통해 여러 외부 HTTPS API를 호출할 때, 한 요청의 TLS 오류가 이후 요청에 영향을 줄 수 있었습니다. - 간헐적인 외부 API 연결 실패 이슈를 경험한 경우 이 버그와 연관됩니다.
- Laravel에서 Guzzle HTTP 클라이언트나
-
DateTimeImmutable 직렬화 (#78751)
- Laravel의 Eloquent 모델 캐스팅(
datetime,immutable_datetime)과 Carbon을 함께 사용할 때DatePeriod직렬화/역직렬화 과정에서DateTimeImmutable이DateTime으로 변환될 수 있었습니다.
- Laravel의 Eloquent 모델 캐스팅(
-
file_get_contents 타임아웃 (#76342)
- Laravel의
Http파사드가 아닌 직접file_get_contents()를 사용하는 레거시 코드나 패키지에서 타임아웃이 두 배로 적용되었을 수 있습니다.
- Laravel의
로컬 개발 환경
- Laravel Valet (macOS):
brew upgrade php@7.2또는 Homebrew의 PHP 탭을 통해 업그레이드 가능합니다. 업그레이드 후valet restart를 실행하세요. - Laravel Sail / Docker: 공식
php:7.2-fpmDocker 이미지 태그를 사용하는 경우, 해당 이미지가 7.2.25 기준으로 업데이트되었는지 확인 후docker pull을 다시 실행하세요.Dockerfile에 특정 버전을 고정한 경우 명시적으로 변경이 필요합니다. - Windows (XAMPP / Laragon): 각 툴의 공식 사이트에서 PHP 7.2.25가 포함된 최신 패키지를 확인하여 업데이트하세요.
보안 긴급도
🔴 긴급: CVE-2019-11043(RCE) 취약점을 포함한 여러 CVE가 7.2.24 이하에 존재합니다. PHP 7.2.23 이하 사용자는 즉시 업그레이드해야 합니다.
🟡 참고: PHP 7.2 브랜치는 2020년 11월에 공식 지원이 종료될 예정입니다. 장기적으로는 PHP 8.x로의 마이그레이션 계획을 수립하는 것을 권장합니다.
실무 체크리스트
로컬 환경
- 현재 PHP 버전 확인:
php -v - PHP 7.2.25로 업그레이드 수행
- macOS (Homebrew):
brew upgrade php@7.2→valet restart - Ubuntu/Debian:
sudo apt-get update && sudo apt-get upgrade php7.2 - Docker/Sail:
docker pull php:7.2-fpm후docker-compose up -d --build
- macOS (Homebrew):
- 업그레이드 후 PHP 버전 재확인:
php -v→PHP 7.2.25출력 확인 - OpCache 설정 초기화:
php artisan opcache:clear또는php -r "opcache_reset();" - 제너레이터, Closure, DateInterval을 사용하는 단위 테스트 재실행:
php artisan test
스테이징 환경
- PHP 7.2.25 업그레이드 후 전체 테스트 스위트 실행
- Nginx + PHP-FPM 사용 환경: CVE-2019-11043 패치 적용 확인
# Nginx 설정에서 취약한 패턴 점검 # PATH_INFO를 pass_through하는 location 블록 확인 grep -r "fastcgi_split_path_info\|PATH_INFO" /etc/nginx/ - PHP-FPM 재시작 후 정상 동작 확인:
sudo systemctl restart php7.2-fpm - OpCache 상태 확인:
php -r "print_r(opcache_get_status());" - 외부 API(HTTPS) 연동 기능 통합 테스트 (OpenSSL TLS 버그 수정 검증)
- 이미지 업로드 기능이 있는 경우 EXIF 처리 테스트 (CVE 패치 검증)
- 한국어가 포함된 PHP 파일 OpCache 동작 확인
프로덕션 환경
- 배포 전 반드시 스테이징에서 검증 완료
- 배포 시간대: 트래픽이 낮은 시간대(예: 새벽) 배포 권장
- PHP 업그레이드 적용
# 업그레이드 전 현재 버전 백업/기록 php -v > /tmp/php_version_before.txt # Ubuntu 예시 sudo apt-get update sudo apt-get install --only-upgrade php7.2 php7.2-fpm php7.2-* - PHP-FPM 무중단 재시작 (graceful reload):
sudo systemctl reload php7.2-fpm# 또는sudo kill -USR2 $(cat /var/run/php/php7.2-fpm.pid) - OpCache 초기화 (배포 스크립트에 포함):
# Laravel Envoyer / Deployer 사용 시 hook에 추가php artisan opcache:clear# 또는 웹서버를 통한 초기화 - 배포 후 에러 로그 모니터링 (최소 30분):
tail -f /var/log/php7.2-fpm.log - APM(New Relic, Datadog 등) 사용 시 PHP 버전 변경 후 메트릭 이상 여부 확인
- CVE-2019-11043 최종 확인: Nginx를 사용하는 경우 아래 설정이 없는지 검토
# 아래와 같은 설정이 있다면 보안 검토 필요 fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; - 장기 계획: PHP 7.2 EOL(2020년 11월 예정)을 고려하여 PHP 8.x 마이그레이션 로드맵 수립
편집자 주: 이 문서는 초안입니다. CVE-2019-11043의 영향 범위 및 Nginx 설정 패턴에 대한 내용은 서버 환경에 따라 다를 수 있으므로, 실제 인프라 담당자와 함께 검토하시기 바랍니다. PHP 7.2 브랜치의 EOL 일정은 공식 PHP 지원 정책(https://www.php.net/supported-versions.php)을 반드시 확인하세요.