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

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

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

발행: 2026년 8월 6일

## 요약

요약

PHP 7.4.18이 2021년 4월 29일에 릴리스되었습니다. 이번 버전은 보안 취약점 수정(IMAP 헤더 인젝션)을 포함하여 Core, MySQLnd, Opcache, Session, FTP, DOM 등 다양한 영역에서 20개 이상의 버그가 수정되었습니다. Laravel 애플리케이션에서 자주 사용하는 데이터베이스, 세션, 스트림 관련 컴포넌트에 직접적인 영향을 미치는 수정 사항이 포함되어 있어 빠른 업그레이드를 권장합니다.


핵심 내용

🔐 보안 수정 사항

  • IMAP 헤더 인젝션 (Bug #80710): imap_mail_compose() 함수에서 헤더 인젝션 취약점이 수정되었습니다. IMAP 기능을 사용하는 메일 발송 로직에 직접적인 보안 영향을 미칩니다. Laravel의 Mail 파사드나 Mailable 클래스에서 IMAP 드라이버를 사용하는 경우 즉시 업그레이드가 필요합니다.

⚡ Core 수정 사항

  • ErrorException 무한 루프 (Bug #80781): 사용자 정의 에러 핸들러가 ErrorException을 던질 때 무한 루프가 발생하는 문제가 수정되었습니다. Laravel의 Handler 클래스나 Sentry, Bugsnag 같은 서드파티 에러 트래킹 패키지 환경에서 예기치 않게 이 버그를 마주칠 수 있었습니다.
  • 스트림 압축 필터 플러시 오류 (Bug #75776): 압축 필터가 적용된 스트림의 플러시가 정상적으로 동작하지 않던 문제가 수정되었습니다. 파일 다운로드, 스트리밍 응답 등에 영향을 줄 수 있었습니다.

🗄️ 데이터베이스 관련 수정 사항

  • MySQLnd + MySQL 8.0 세그멘테이션 폴트 (Bug #80713): ATTR_EMULATE_PREPARES를 비활성화한 상태에서 MySQL 8.0과 함께 사용할 때 세그멘테이션 폴트가 발생하는 심각한 버그가 수정되었습니다. Laravel에서 PDO::ATTR_EMULATE_PREPARES => false 설정을 config/database.php에 명시한 경우 해당 버그에 노출될 수 있습니다.
  • PDO ODBC BLOB 256바이트 잘림 (Bug #80783): PDO ODBC 드라이버에서 BLOB 데이터가 256바이트마다 잘리는 버그가 수정되었습니다. MSSQL 또는 ODBC 기반 데이터베이스를 사용하는 프로젝트에 해당됩니다.
  • PDO_pgsql PARAM_INT/PARAM_STR 혼동 (Bug #80892): PostgreSQL PDO 드라이버에서 PDO::PARAM_INTPDO::PARAM_STR과 동일하게 처리되던 버그가 수정되었습니다. 단, 이 수정 사항은 7.4.19에서 롤백되었으므로 PostgreSQL 사용자는 7.4.19 이후 버전의 동작을 반드시 재확인해야 합니다.

🚀 Opcache 수정 사항

  • 단순 클래스 생성 시 Opcache 오류 (Bug #80805): Opcache 활성화 환경에서 단순한 클래스 생성 코드가 오류를 일으키는 버그가 수정되었습니다. Laravel의 대규모 클래스 구조 환경(모델, 서비스 클래스 등)에서 재현될 가능성이 있었습니다.
  • if 문 내 변수 null 변환 (Bug #80950): Opcache 최적화 과정에서 if 구문 내 변수가 null로 변환되는 치명적인 버그가 수정되었습니다. 이는 운영 환경에서 로직 오류를 일으킬 수 있는 심각한 문제입니다.

🔧 기타 주요 수정 사항

  • FTP SSL 읽기 오류 (Bug #80880): FTP/proc_open 환경에서 SSL 읽기 관련 버그 수정.
  • Session 이름 백슬래시 처리 (Bug #80774): session_name()에서 백슬래시 처리 오류 수정. Windows 환경 또는 특수 세션 키를 사용하는 경우 해당될 수 있습니다.
  • SOAP XML 특수문자 인코딩 (Bug #69668): SOAP 네임스페이스 URI의 특수문자가 인코딩되지 않던 문제 수정. 외부 SOAP API 연동 시 발생하던 오류에 해당합니다.
  • DOM UAF(Use-After-Free) (Bug #66783): DOMDocument를 엘리먼트에 추가할 때 발생하는 메모리 취약점 수정.

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

호환성 및 업그레이드 난이도

  • PHP 7.4.x 브랜치 내 마이너 버전 업그레이드이므로 하위 호환성 파괴(Breaking Change)는 없습니다.
  • composer.json의 PHP 버전 제약 조건이 ^7.4 또는 >=7.4.0으로 설정된 프로젝트는 패키지 변경 없이 PHP 바이너리만 교체하면 됩니다.

보안 긴급도

  • IMAP 헤더 인젝션 취약점(Bug #80710)으로 인해 보안 업그레이드 우선순위가 높습니다. 특히 imap 확장을 사용하는 레거시 Laravel 프로젝트는 즉시 패치가 필요합니다.

로컬/배포 환경별 참고 사항

환경조치 방법
Laravel Valet (macOS)brew upgrade php@7.4 또는 valet installvalet restart로 적용
Laravel Sail (Docker)sail/app 이미지의 PHP 7.4 기반 이미지 업데이트 후 sail build --no-cache 실행
Docker 커스텀 이미지FROM php:7.4.18-fpm 또는 7.4.18-cli 등으로 베이스 이미지 태그 명시 업데이트
Ubuntu/Debian (PPA)sudo apt-get update && sudo apt-get upgrade php7.4
CentOS/RHEL (Remi 저장소)sudo yum update php74

PDO_pgsql 사용자 주의사항

  • Bug #80892 (PDO_pgsql PARAM_INT 처리) 수정이 7.4.19에서 롤백되었으므로, PostgreSQL 기반 Laravel 프로젝트에서 정수형 바인딩 관련 동작이 7.4.18과 7.4.19 간에 차이를 보일 수 있습니다. 7.4.18로 업그레이드 후 PostgreSQL 쿼리 결과를 반드시 검증하십시오.

MySQL 8.0 + ATTR_EMULATE_PREPARES 사용자

// config/database.php 내 아래와 같은 설정을 사용하는 경우 해당됨 'options' => [ PDO::ATTR_EMULATE_PREPARES => false, ],

이 설정과 MySQL 8.0 조합에서 세그멘테이션 폴트가 발생했다면 이번 업그레이드로 해결됩니다.


실무 체크리스트

로컬 개발 환경

  • 현재 PHP 버전 확인: php -v
  • Valet 사용 시: brew upgrade php@7.4valet restart
  • Sail/Docker 사용 시: Dockerfile의 PHP 기반 이미지 태그를 7.4.18로 업데이트 후 sail build --no-cache
  • 업그레이드 후 php -v로 버전 재확인
  • php -m으로 imap, pdo_pgsql, mysqlnd 등 주요 확장 모듈 정상 로드 확인

스테이징 환경

  • PHP 7.4.18 업그레이드 적용
  • php-fpm 재시작: sudo systemctl restart php7.4-fpm
  • Laravel 애플리케이션 전체 기능 스모크 테스트 실행
  • Opcache 활성화 환경: if 문 내 변수 처리 로직이 포함된 코드 테스트 (Bug #80950 관련)
  • MySQL 8.0 사용 시: ATTR_EMULATE_PREPARES => false 옵션 조합 하에서 DB 쿼리 정상 동작 확인
  • PostgreSQL 사용 시: 정수형 바인딩 쿼리 결과 검증 (7.4.18 vs 7.4.19 동작 차이 사전 파악)
  • SOAP API 연동 프로젝트: 네임스페이스 URI 특수문자 인코딩 동작 확인
  • 세션 설정 확인: session_name()에 특수문자 포함 여부 점검

운영(Production) 환경

  • 스테이징 테스트 완료 후 배포 진행
  • 배포 전 Opcache 캐시 초기화: php artisan opcache:clear 또는 php -r "opcache_reset();" (CLI 환경)
  • 무중단 배포(Rolling Update) 또는 점검 시간 내 PHP 바이너리 교체
  • php-fpm 프로세스 재시작 확인
  • 배포 후 애플리케이션 에러 로그(storage/logs/laravel.log) 및 시스템 로그(/var/log/syslog, /var/log/php-fpm) 모니터링
  • IMAP 사용 프로젝트: 메일 발송 기능 정상 동작 확인 및 보안 감사 수행
  • APM/모니터링 도구(New Relic, Datadog, 라라벨 Telescope 등)에서 오류율 이상 없는지 확인

⚠️ 참고: PHP 7.4.18 바로 다음 버전인 7.4.19에서 PDO_pgsql 관련 수정이 롤백되었음이 확인되었습니다. PostgreSQL을 사용하는 프로젝트는 가능하다면 7.4.19 이상으로의 업그레이드를 함께 검토하고, 해당 버전의 릴리스 노트도 반드시 확인하십시오.