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

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

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

발행: 2026년 8월 6일

## 요약

요약

PHP 7.4.1은 2019년 12월 19일에 릴리스된 보안 패치 및 버그 수정 버전입니다. 총 5개의 CVE(공통 취약점 및 노출) 보안 취약점이 수정되었으며, Bcmath, Core, EXIF, FPM 등 다양한 영역에서 중요한 버그가 해결되었습니다. Laravel 7.x 이전 시대의 릴리스이지만, 보안 취약점의 심각성을 고려할 때 당시 PHP 7.4.0 사용자에게는 즉각적인 업그레이드가 요구되었던 중요한 패치입니다.


핵심 내용

🔐 보안 취약점 (CVE) 수정 — 최우선 확인 사항

PHP 7.4.1에서 수정된 CVE는 총 5건으로, 단순한 기능 버그가 아닌 실제 공격 벡터로 활용될 수 있는 취약점입니다.

CVE영역내용위험도
CVE-2019-11046Bcmathbc_shift_addsub에서 버퍼 언더플로우중간
CVE-2019-11044Core (Windows)link() 함수에서 null 바이트 이후 경로 묵시적 절단높음
CVE-2019-11045CoreDirectoryIterator에서 null 바이트 이후 묵시적 절단높음
CVE-2019-11049Coremail() 함수에서 refcount==1인 문자열 이중 해제높음
CVE-2019-11050EXIF메모리 새니타이저 하에서 EXIF 파싱 중 Use-after-free높음
CVE-2019-11047EXIFEXIF 처리 중 힙 버퍼 오버플로우 (READ)높음

⚠️ 주의: CVE-2019-11044 및 CVE-2019-11045는 Windows 환경에서 경로 처리 우회를 가능하게 하는 취약점으로, 파일 시스템 접근 관련 코드가 있는 애플리케이션에서 특히 위험합니다.


🐛 주요 버그 수정

Core 영역

  • Symfony 연동 문제 해결: Segmentation fault on Symfony cache:clear (버그 #78926) — Symfony 기반 Laravel 패키지를 혼용하거나 Symfony 컴포넌트를 직접 사용하는 프로젝트에서 캐시 클리어 시 발생하던 세그멘테이션 오류가 수정되었습니다.
  • 초기화되지 않은 프로퍼티 처리 개선: 버그 #78810, #78904 — 타입 선언된 프로퍼티(PHP 7.4 신규 기능)의 초기화 전 접근 시 예외 처리가 일관되지 않던 문제 수정.
  • call_user_func 관련 버그 수정: 버그 #78898 — ['parent', '...'] 형태로 부모 메서드 호출 시 실패하던 문제 수정.

FPM 영역

  • php-fpm 서비스 시작 실패 수정 (버그 #78889): 7.4.0에서 새로 도입된 FPM 관련 변경사항으로 인해 서비스 기동 자체가 실패하는 심각한 버그가 수정되었습니다.
  • php-fpm에서 mail() 함수 동작 불가 수정 (버그 #78916): PHP 7.4.0의 FPM 환경에서 mail() 함수가 완전히 동작하지 않는 회귀 버그 수정.
  • 불완전한 리로드 후 FPM 부분 작동 문제 (버그 #76601): reload 시 일부 워커가 정상적으로 재시작되지 않던 문제 수정.

OPcache 영역

  • 프리로딩(Preloading) 버그 수정 (버그 #78935): PHP 7.4에서 새로 도입된 opcache.preload 기능이 의존성이 있는 클래스를 제거해버리는 심각한 버그 수정. Laravel 애플리케이션에서 프리로딩을 실험적으로 적용하던 경우 반드시 확인 필요.

Standard 영역

  • strip_tags() 화이트리스트 우회 취약점 (버그 #78814): 태그 이름에 /를 포함시켜 strip_tags()의 허용 태그 목록을 우회할 수 있던 버그 수정. 사용자 입력을 strip_tags()로 필터링하는 코드가 있다면 보안 관점에서 중요한 수정입니다.
  • implode($GLOBALS) 크래시 (버그 #78840): 글로벌 변수 배열에 implode()를 직접 적용 시 크래시 발생 수정.

PCRE 영역

  • preg_match() 반환값 오류 (버그 #78853): preg_match()가 1보다 큰 정수를 반환할 수 있던 버그 수정. if (preg_match(...) === 1) 형태의 엄격한 비교를 사용하는 코드에서 의도치 않은 동작이 발생할 수 있었습니다.

Intl 영역

  • 회계 형식(Accounting format) 지원 추가 (FR #78912): NumberFormatter에서 회계 형식(ACCOUNTING) 지원이 추가되었습니다. 금융 관련 Laravel 애플리케이션에서 유용하게 활용 가능합니다.

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

호환성 및 Laravel 버전 관계

PHP 7.4.1은 Laravel 6.x(LTS) 및 Laravel 7.x(당시 개발 중)와 함께 사용되던 PHP 버전입니다. 현재 시점에서 이 버전은 EOL(End of Life)이므로, 현재 프로젝트에서 PHP 7.4.x를 사용 중이라면 PHP 8.1 또는 8.2로의 마이그레이션을 강력히 권장합니다.

📌 역사적 맥락: 이 릴리스 노트는 PHP 7.4 계열의 초기 안정화 과정을 보여주는 좋은 사례입니다. PHP 7.4.0에서 도입된 타입 프로퍼티, FFI, OPcache 프리로딩 등 신규 기능이 실제 운영 환경에서 얼마나 많은 회귀 버그를 유발했는지 확인할 수 있습니다.

보안 취약점의 실무 영향

현재 PHP 7.4.x를 운영 중인 팀 → 즉시 EOL 대응 계획 수립 필요
EXIF 관련 기능 사용 여부 → 이미지 업로드 처리 코드 점검
strip_tags() 사용 위치 → 보안 감사 권장
mail() 함수 사용 + FPM 환경 → 7.4.0에서 7.4.1로 업그레이드 필수였음

로컬 개발 환경별 영향

Laravel Valet (macOS)

  • PHP 7.4 시절 Valet에서 FPM 서비스 시작 실패(버그 #78889)가 발생했을 경우, valet restart 후에도 정상화되지 않는 문제의 근본 원인이 PHP 7.4.0 자체 버그였습니다.
  • valet use php@7.4 사용 시 반드시 7.4.1 이상 패치 버전이 설치되었는지 확인이 필요했습니다.

Laravel Sail / Docker

  • Docker 이미지에서 php:7.4.0-fpm 태그를 고정 사용하던 경우, FPM 시작 실패 및 mail() 미동작 버그에 영향받을 수 있었습니다.
  • 교훈: Docker 이미지에서 마이너 버전 태그(php:7.4-fpm)를 사용하여 패치 버전이 자동으로 적용되도록 하는 것이 권장됩니다.

OPcache 프리로딩 (실험적 기능 주의)

  • PHP 7.4.0에서 도입된 opcache.preload를 7.4.0에서 적용했다면, 의존성이 있는 클래스가 제거되는 버그(#78935)로 인해 예기치 않은 Class not found 오류가 발생했을 수 있습니다.
  • Laravel에서 프리로딩 최적화를 실험 중이었다면, 7.4.1 이상에서만 안정적으로 동작합니다.

실무 체크리스트

🔴 즉시 확인 (보안)

  • 현재 운영 중인 PHP 버전 확인: php -v
  • PHP 7.4.x 사용 중이라면, 7.4.33(최종 패치 버전) 이상인지 확인
  • EXIF 관련 이미지 처리 기능 사용 여부 코드베이스 검색:
    grep -r "exif_read_data\|exif_imagetype\|exif_thumbnail" ./app
  • strip_tags() 사용 위치 검색 및 보안 감사:
    grep -rn "strip_tags" ./app ./resources
  • DirectoryIterator 또는 link() 함수에 사용자 입력이 직접 전달되는 코드 확인

🟡 스테이징 환경 확인

  • OPcache 프리로딩 설정 사용 여부 확인 (php.ini에서 opcache.preload 설정 검색)
  • preg_match() 반환값을 === 1로 엄격하게 비교하는 코드 검토
  • Bcmath 함수(bcadd, bcsub 등) 사용 시 대규모 수치 연산 테스트
  • FPM 환경에서 mail() 함수 동작 테스트 (Laravel Mail 파사드 포함)

🟢 운영 환경 마이그레이션 (장기 계획)

  • PHP 7.4는 2022년 11월부로 공식 EOL — 현재 사용 중이라면 업그레이드 로드맵 수립
  • PHP 8.1 또는 8.2로 업그레이드 전 PHP 8.x 마이그레이션 가이드 검토
  • Laravel 버전과 PHP 버전 호환성 매트릭스 확인:
    • Laravel 10.x → PHP 8.1+
    • Laravel 11.x → PHP 8.2+
  • Docker 기반 환경이라면 php:7.4.0-fpm 같은 패치 버전 고정 태그 제거, php:8.2-fpm 등 마이너 버전 태그로 전환
  • Sail 사용자: docker-compose.yml의 PHP 이미지 버전 업데이트 후 sail build --no-cache 실행

📋 코드 품질 확인 (PHP 7.4 신규 기능 관련)

  • PHP 7.4 타입 선언 프로퍼티(public string $name;) 사용 시 초기화 전 접근 코드 검토
  • call_user_func(['parent', 'methodName']) 패턴 사용 코드 동작 확인
  • $x = (bool)$x; 패턴에서 미선언 변수 관련 OPcache 동작 확인

편집자 주: 이 문서는 PHP 7.4.1 릴리스 노트를 기반으로 작성된 드래프트입니다. PHP 7.4 계열은 현재 EOL 상태이므로, 이 글은 레거시 시스템 유지보수 팀 또는 PHP 버전 업그레이드 계획을 수립하는 팀을 주요 독자로 상정합니다. 신규 프로젝트에는 반드시 PHP 8.2 이상을 사용하십시오.