업데이트phplaravel업데이트
PHP 7.4.10 업데이트 — 한국 Laravel 개발자 영향 분석
작성: 라라벨 코리아 (초안)
발행: 2026년 8월 6일
## 요약
요약
PHP 7.4.10은 2020년 9월 3일에 릴리스된 누적 업데이트로, 7.4.4부터 7.4.9까지의 변경 사항을 모두 포함합니다. 이 릴리스에는 CVE-2020-7068(Phar), CVE-2020-7067(urldecode), CVE-2020-7064(EXIF), CVE-2020-7065(MBstring) 등 복수의 보안 취약점 수정이 포함되어 있어 즉각적인 업그레이드가 강력히 권장됩니다. 한국 Laravel 개발자라면 OPcache, PDO, Mbstring, Session 등 실무에서 자주 사용하는 핵심 컴포넌트에 영향을 미치는 버그 수정 내용을 반드시 확인해야 합니다.
핵심 내용
🔒 보안 수정 사항 (즉시 대응 필요)
| CVE | 영향 컴포넌트 | 포함 버전 | 설명 |
|---|---|---|---|
| CVE-2020-7068 | Phar | 7.4.9 | phar_parse_zipfile에서 해제된 해시 키 사용(Use-of-freed) |
| CVE-2020-7067 | Standard (urldecode) | 7.4.5 | OOB(Out-of-Bounds) 읽기 취약점 |
| CVE-2020-7064 | EXIF | 7.4.4 | 초기화되지 않은 값 사용 |
| CVE-2020-7065 | MBstring (mb_strtolower) | 7.4.4 | UTF-32LE 처리 시 스택 버퍼 오버플로우 |
⚠️ 주의: 현재 7.4.9 이하를 사용 중이라면 위 취약점에 노출되어 있습니다. 특히 Phar 패키지를 사용하는 Laravel 애플리케이션(Composer 의존성 포함)과 사용자 입력값을 URL 디코딩하는 코드는 즉시 업그레이드가 필요합니다.
🐛 주요 버그 수정 분석
Core / 런타임
realpath()심볼릭 링크 오해석 수정 (Bug #79806): Laravel 프로젝트에서 심볼릭 링크를 사용해storage또는public디렉토리를 연결하는 경우(Valet, Docker 볼륨 등) 경로 해석이 잘못될 수 있었던 문제가 수정되었습니다.- 파일 확장자 대소문자 구분 문제 수정 (Bug #77932): Windows 환경에서
.PHP,.Php등 대소문자 혼용 확장자를 인식하지 못하던 문제가 수정되었습니다. define()의 스택 use-after-scope 수정 (Bug #79919): 상수 정의 시 발생 가능한 메모리 안전성 문제가 수정되었습니다.- Heredoc CRLF 파싱 오류 수정 (Bug #79934): Windows 스타일 줄바꿈(
\r\n)만 있는 Heredoc 구문에서 파싱 오류가 발생하던 문제가 수정되었습니다. Windows 개발 환경 사용자에게 직접적인 영향이 있습니다.
OPcache
- 파일 캐시 세그멘테이션 오류 수정 (Bug #79917): 상속된 메서드 내 정적 변수 사용 시 파일 캐시(
opcache.file_cache)가 세그멘테이션 오류를 일으키던 심각한 문제가 수정되었습니다. - 임시 폴더 정리 후 OPcache 실패 수정 (Bug #73060):
/tmp디렉토리 정리 이후 OPcache가 동작하지 않던 문제가 수정되었습니다. Docker 컨테이너 재시작 환경과 관련이 있을 수 있습니다. - Boolean 설정값 on/off 무시 문제 수정 (7.4.7, Bug #79588):
php.ini에서opcache.enable=On형태로 설정했을 때 무시되던 회귀 버그가 수정되었습니다. - Preloading 세그멘테이션 오류 수정 (7.4.7, Bug #79548 / 7.4.4, Bug #79252): Laravel 8 이상에서 Opcache Preloading(
opcache.preload) 사용 시 세그멘테이션 오류 또는 PHP-FPM 종료 시 충돌이 발생하던 문제가 수정되었습니다.
PDO
PDOException::errorInfonull 반환 수정 (Bug #64705):PDO::__construct()실패 시 예외 객체의errorInfo프로퍼티가null로 반환되던 오래된 버그가 수정되었습니다. Laravel의 데이터베이스 연결 실패 처리 로직에서 더 정확한 오류 정보를 얻을 수 있게 됩니다.
Session
session_create_id()활성 세션에서 실패 수정 (7.4.5, Bug #79413): Laravel의 세션 재생성(Session::regenerate()) 호출 시 내부적으로 영향을 줄 수 있는 버그가 수정되었습니다.
Standard 라이브러리
array_merge_recursive()크래시 수정 (Bug #79930): 단일 참조(&)를 포함한 배열 처리 시 크래시 발생 문제가 수정되었습니다.str_replace()빈 문자열 메모리 누수 수정 (Bug #79951): 빈 문자열 치환 시 메모리 누수가 발생하던 문제가 수정되었습니다. 뷰 렌더링, 문자열 처리 위주의 애플리케이션에서 장시간 운영 시 메모리 사용량에 영향이 있었을 수 있습니다.getmxrr()Alpine Linux에서 항상 true 반환 수정 (Bug #79944): Alpine 기반 Docker 이미지에서 MX 레코드 조회 함수가 항상true를 반환하던 문제가 수정되었습니다. 이메일 발송 전 도메인 검증 로직에 영향이 있을 수 있습니다.shell_exec()null 바이트 이후 결과 잘림 수정 (7.4.5, Bug #79330): 외부 명령 실행 결과에 null 바이트가 포함될 경우 이후 내용이 무시되던 문제가 수정되었습니다.
XML
xml_parser_free()중복 호출 시 크래시 수정 (Bug #79922): XML 파서 해제 시 크래시 발생 문제가 수정되었습니다. Laravel에서 XML 기반 외부 API(카카오, 공공데이터 포털 등)를 연동하는 경우 해당될 수 있습니다.
Mbstring
mb_strimwidth()문자열 미절삭 수정 (7.4.9, Bug #79787): 다국어(한국어 포함) 문자열 너비 기반 절삭이 동작하지 않던 문제가 수정되었습니다. 한국어 문자열 처리에 직접적인 영향이 있습니다.
Date / DateTime
- DST(일광절약시간) 전환 시 시간 오류 수정 (7.4.5, Bug #79396):
DateTime객체에서 DST 적용 시점에 시간이 잘못 계산되던 문제가 수정되었습니다. 한국은 DST를 사용하지 않으나, 글로벌 서비스를 운영하거나 해외 사용자 대상 Laravel 애플리케이션에서 관련 있을 수 있습니다.
한국 Laravel 개발자에게 미치는 영향
호환성
- PHP 7.4.10은 하위 호환성이 유지되는 패치 릴리스입니다. 7.4.x를 사용 중이라면 코드 변경 없이 업그레이드 가능합니다.
- Laravel 6.x(LTS), 7.x, 8.x 초기 버전 모두 PHP 7.4와 호환됩니다.
한국어 처리 (Mbstring)
mb_strimwidth()버그 수정(Bug #79787)은 한국어 문자열 너비 계산을 기반으로 한 리스트, 요약 텍스트 절삭 기능에 직접 영향을 줍니다. 기존에 잘못 동작하던 코드가 이 버전부터 올바르게 동작할 수 있으므로, 관련 출력 결과를 반드시 검증해야 합니다.- CVE-2020-7065(
mb_strtolowerUTF-32LE 스택 오버플로우)는 보안 취약점이므로 다국어 처리 애플리케이션에서 특히 중요합니다.
Docker / Laravel Sail (Alpine Linux)
- Alpine Linux 기반 이미지(Laravel Sail 기본 이미지 포함)를 사용하는 경우
getmxrr()버그(Bug #79944)가 이메일 도메인 검증 로직에 영향을 줄 수 있었습니다. - OPcache 임시 폴더 관련 버그(Bug #73060)는 컨테이너 재시작 시 OPcache가 비활성화되는 증상으로 나타날 수 있었으므로, 해당 증상을 경험했다면 이번 업그레이드로 해결됩니다.
php.ini의 OPcache Boolean 설정 무시 버그(Bug #79588)는 Docker 환경에서 환경변수로PHP_OPCACHE_ENABLE=On을 전달하는 경우 설정이 적용되지 않던 원인이었을 수 있습니다.
Laravel Valet (macOS)
realpath()심볼릭 링크 오해석 버그(Bug #79806) 수정은 Valet이~/.config/valet/Sites아래 심볼릭 링크로 프로젝트를 연결하는 방식을 사용하므로 일부 경로 관련 이상 동작을 해결할 수 있습니다.- Heredoc CRLF 파싱 오류(Bug #79934)는 macOS/Linux 환경에서는 일반적으로 재현되지 않으나, Windows에서 작성된 코드를 공유받는 경우 주의가 필요합니다.
보안 우선순위 평가
| 우선순위 | 대상 | 이유 |
|---|---|---|
| 🔴 즉시 | 파일 업로드, Phar 처리, URL 디코딩 기능 포함 앱 | CVE-2020-7067, CVE-2020-7068 직접 영향 |
| 🔴 즉시 | EXIF 데이터 처리 앱(이미지 업로드 서비스) | CVE-2020-7064 |
| 🔴 즉시 | 다국어 문자열 처리 앱 | CVE-2020-7065 |
| 🟡 권장 | OPcache Preloading 사용 앱 | 세그멘테이션 오류 위험 |
| 🟢 일반 | 기타 Laravel 7.4.x 사용 앱 | 안정성 및 메모리 누수 개선 |
실무 체크리스트
로컬 개발 환경
- 현재 PHP 버전 확인:
php -v - Homebrew(macOS Valet 환경):
brew upgrade php또는brew upgrade shivammathur/php/php@7.4 - Docker/Sail:
Dockerfile또는docker-compose.yml의 PHP 이미지 태그를7.4.10이상으로 업데이트 후docker-compose build --no-cache -
mb_strimwidth()를 사용하는 한국어 문자열 처리 로직의 출력 결과를 반드시 재검증
스테이징 환경
-
apt-get upgrade php7.4또는 운영 중인 패키지 관리자로 업그레이드 수행 -
php -v로 7.4.10 적용 확인 - OPcache 활성화 여부 재확인:
php -r "var_dump(function_exists('opcache_get_status'));" -
php.ini의 OPcache 설정이 올바르게 적용되는지 확인 (opcache.enable,opcache.enable_cli등 on/off 값 포함) - Opcache Preloading(
opcache.preload) 사용 중인 경우 FPM 재시작 후 세그멘테이션 오류 발생 여부 모니터링 - 이미지 업로드 기능 동작 검증 (EXIF 관련 수정)
- Laravel 세션 재생성 기능(
Session::regenerate()) 동작 검증
프로덕션 환경
- 업그레이드 전 반드시 현재 환경 스냅샷 또는 백업 확보
- PHP-FPM 사용 중인 경우: 업그레이드 후
systemctl restart php7.4-fpm수행 - Nginx/Apache 설정에서 PHP-FPM 소켓 경로 변경 여부 확인
- 배포 후 APM(New Relic, Datadog 등) 또는 Laravel Telescope를 통해 오류율 및 메모리 사용량 모니터링
-
urldecode()를 사용하는 URL 처리 로직이 있다면 보안 테스트 수행 (CVE-2020-7067) - Phar 파일을 직접 생성하거나 처리하는 로직이 있는 경우 동작 이상 여부 확인 (CVE-2020-7068)
- 업그레이드 완료 후
php -v및phpinfo()페이지(접근 제한 필수)로 버전 확인
참고: 이 문서는 초안(Draft)이며, 각 CVE의 실제 익스플로잇 가능성 및 CVSS 점수는 php.net 공식 보안 페이지 및 각 CVE 상세 페이지에서 추가로 확인하시기 바랍니다.