업데이트phplaravel업데이트
PHP 7.4.14 업데이트 — 한국 Laravel 개발자 영향 분석
작성: 라라벨 코리아 (초안)
발행: 2026년 8월 6일
## 요약
요약
PHP 7.4.14가 2021년 1월 7일에 릴리스되었습니다. 이번 업데이트는 보안 취약점 패치(CVE-2020-7071)를 포함하여 PDO MySQL, Phar, Core, FPM 등 다양한 영역의 버그가 수정되었습니다. Laravel 애플리케이션에서 자주 사용되는 PDO MySQL과 관련된 수정 사항이 다수 포함되어 있어 실무 적용 시 주의 깊게 검토할 필요가 있습니다.
핵심 내용
🔒 보안 수정 (CVE-2020-7071)
FILTER_VALIDATE_URL이 잘못된 userinfo를 포함한 URL을 허용하던 취약점이 수정되었습니다 (Bug #77423).- Laravel에서
filter_var($url, FILTER_VALIDATE_URL)또는Request::url()검증 로직에 이를 의존하는 경우, 기존에 통과하던 일부 URL이 이제 유효하지 않은 것으로 처리될 수 있습니다. - 사용자 입력 URL을 검증하는 코드가 있다면 반드시 동작 변경 여부를 확인해야 합니다.
⚠️ 이 CVE는 이전 릴리스(7.4.11의 CVE-2020-7070, 7.4.10의 CVE-2020-7069, 7.4.9의 CVE-2020-7068)에 이어 연속된 보안 패치의 일환입니다. 7.4.8 이하 버전을 사용 중이라면 여러 CVE에 동시에 노출되어 있을 수 있습니다.
🗄️ PDO MySQL 다중 버그 수정 (Laravel Eloquent/Query Builder 영향)
이번 릴리스에서 PDO MySQL 관련 수정이 가장 많습니다. Laravel의 데이터베이스 레이어는 PDO에 전적으로 의존하므로 실무 영향이 큽니다.
| 버그 번호 | 내용 | Laravel 영향 |
|---|---|---|
| #80458 | PDOStatement::fetchAll()이 upsert 쿼리에서 예외를 던지던 문제 | upsert() 사용 시 예외 발생 가능성 해소 |
| #63185 | nextRowset()이 네이티브 prepared statement에서 MySQL 에러를 무시하던 문제 | 스토어드 프로시저 호출 시 에러 누락 위험 해소 |
| #78152 | PDO::exec()에서 다중 명령 실행 시 잘못된 에러 처리 | 마이그레이션/시드에서 다중 SQL 실행 시 영향 가능 |
| #70066 | unbuffered 쿼리 오류 "Cannot execute queries while other unbuffered queries" 오탐 | 복잡한 쿼리 체인에서 발생하던 의문의 에러 해소 |
| #71145 | init command에서 다중 구문 사용 시 unbuffered 쿼리 오류 트리거 | DB 연결 초기화 커스터마이징 시 영향 |
| #76815 | PROCEDURE resultset SIGNAL 시 PDOStatement GC 불가 | 스토어드 프로시저 사용 환경에서 메모리 누수 가능성 해소 |
🧩 Core 버그 수정
- Bug #74558:
Closure::fromCallable()로 반환된 클로저를bindTo()로 재바인딩할 수 없던 문제 수정. Laravel의 서비스 컨테이너 바인딩이나 매크로(Macroable) 패턴 사용 시 관련될 수 있습니다. - Bug #77069: 스트림 필터에서 마지막 데이터 블록이 손실되던 문제 수정. 파일 처리, 스트리밍 응답 등에서 데이터 유실 가능성 해소.
- Bug #80411: null로 직렬화된 객체 참조가
serialize()를 깨뜨리던 문제 수정. 세션, 캐시 직렬화 관련 버그에 영향 가능.
🐘 FPM 수정
- Bug #69625:
SCRIPT_FILENAME환경 변수 없이 요청이 올 경우 PHP-FPM이 200 상태 코드를 반환하던 문제 수정. Nginx + PHP-FPM 조합에서 잘못된 설정이 있을 때 오류가 조용히 묻히던 현상 해소.
📦 Phar 수정
- Bug #73809: Phar Zip 파싱 시 mmap 실패로 크래시 발생 문제 수정.
- Bug #75102: 유효한 tar 파일에 대해
PharData가 잘못된 체크섬 오류를 반환하던 문제 수정. - Bug #77322:
PharData::addEmptyDir('/')호출 시 정수 오버플로우 가능성 수정. - Composer 패키지 및 Laravel Zero 등 Phar 기반 배포를 사용하는 환경에서 안정성이 향상됩니다.
🔐 OpenSSL
- Bug #80368: LibreSSL 빌드 시 OCB 미지원으로 OpenSSL 익스텐션 빌드 실패 문제 수정. Alpine Linux 기반 Docker 이미지(LibreSSL 사용)에서 빌드 오류를 겪던 개발자에게 직접적인 영향을 줍니다.
🗂️ Fileinfo
- Bug #77961:
finfo_open()에서 조작된 magic 파일 파싱 시 SIGABRT(비정상 종료) 가능성 수정. 파일 업로드 MIME 타입 검사에finfo를 사용하는 경우 보안적으로 주의할 필요가 있습니다.
한국 Laravel 개발자에게 미치는 영향
호환성
- PHP 7.4.14는 이전 7.4.x 버전과 완전히 하위 호환됩니다. 코드 변경 없이 업그레이드 가능합니다.
- 단,
FILTER_VALIDATE_URL동작이 변경되었으므로 URL 유효성 검사 로직은 반드시 재테스트가 필요합니다.
마이그레이션 부담
- 낮음: 패치 버전 업그레이드이므로 breaking change는 없습니다. 단순 바이너리/패키지 교체로 업그레이드 가능합니다.
보안 긴급도
- 중간~높음: CVE-2020-7071은 URL 유효성 검증 우회 취약점입니다. 외부 입력 URL을 직접
FILTER_VALIDATE_URL로 검증하는 코드가 있다면 즉시 업그레이드를 권장합니다. - 7.4.9~7.4.13 사이 버전에서는 이미 이전 CVE들이 수정되었으므로, 7.4.8 이하를 사용 중이라면 복수의 CVE에 노출된 상태입니다.
로컬 도구 (Valet, Sail, Docker)
Laravel Valet (macOS)
# Homebrew로 PHP 업그레이드brew upgrade php@7.4valet restart- Homebrew에서
php@7.4포뮬러가 7.4.14로 업데이트된 이후 적용 가능합니다. 업데이트 이전이라면 직접 빌드 또는 대기가 필요합니다.
Laravel Sail / Docker
# PHP 7.4 공식 이미지 태그 확인
FROM php:7.4.14-fpm-alpinephp:7.4-fpm등의 floating 태그를 사용하는 경우, 이미지 재pull 시 자동으로 반영됩니다.- Alpine 기반 이미지에서 LibreSSL 관련 OpenSSL 빌드 문제(Bug #80368)가 수정되었으므로, 기존에 Alpine PHP 7.4 빌드에서 오류를 겪었다면 이번 버전으로 해소될 수 있습니다.
Ubuntu/Debian 서버 (운영 환경)
# ondrej/php PPA 사용 시
sudo apt update && sudo apt upgrade php7.4
sudo systemctl restart php7.4-fpm실무 체크리스트
로컬 개발 환경
- PHP 버전 확인:
php -v→ 7.4.14 이상 여부 확인 -
FILTER_VALIDATE_URL을 사용하는 커스텀 유효성 검사 규칙, Form Request, 미들웨어 코드 검색grep -rn "FILTER_VALIDATE_URL" app/ config/ routes/ -
Closure::fromCallable()+bindTo()/bind()패턴 사용 여부 확인 (매크로, 서비스 컨테이너 관련) - PDO MySQL 관련 스토어드 프로시저, upsert, 다중 SQL 실행 코드 테스트
스테이징 환경
- PHP 7.4.14로 업그레이드 후 전체 테스트 스위트 실행:
php artisan test - 파일 업로드 기능이 있는 경우
finfo관련 동작 검증 - Phar 기반 배포 도구(Composer, Laravel Zero 등) 정상 동작 확인
- Nginx + PHP-FPM 환경에서
SCRIPT_FILENAME누락 요청 처리 동작 확인 - 스트림 필터 사용 코드(파일 암호화, 스트리밍 다운로드 등) 데이터 무결성 테스트
운영 환경
- 배포 전 스테이징 테스트 완료 확인
- 업그레이드 전 PHP-FPM 설정 백업
- 롤링 배포 또는 점검 시간 중 업그레이드 적용
- 업그레이드 후 PHP-FPM 재시작:
sudo systemctl restart php7.4-fpm - 에러 로그 모니터링 (업그레이드 직후 1~2시간):
/var/log/php7.4-fpm.log - OPcache 초기화:
php artisan opcache:clear또는 PHP-FPM 재시작으로 캐시 무효화 -
FILTER_VALIDATE_URL동작 변경으로 인한 기존 사용자 데이터 영향 여부 검토
📝 편집자 주: 이 문서는 초안입니다. CVE-2020-7071의 실제 악용 가능성 및 Laravel 유효성 검사 레이어(
Illuminate\Validation)와의 구체적인 연관성은 추가 검증이 필요합니다. Homebrew 포뮬러의 7.4.14 업데이트 시점은 공식 채널에서 별도 확인을 권장합니다.