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

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

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

발행: 2026년 8월 6일

## 요약

요약

PHP 7.2.18은 2019년 5월 2일 릴리스된 보안 패치 버전으로, EXIF 확장의 힙 버퍼 오버플로우(CVE-2019-11036)를 포함한 다수의 버그를 수정합니다. 이미지 처리, 메일 전송, PDO, PCRE 등 실무에서 자주 사용되는 컴포넌트에 걸쳐 안정성 개선이 이루어졌습니다. 현재 PHP 7.2 시리즈를 운영 중인 한국 Laravel 개발자라면 이번 업데이트를 즉시 적용하는 것이 권장됩니다.


핵심 내용

🔴 보안 취약점 (즉시 패치 필요)

  • CVE-2019-11036 — EXIF 힙 버퍼 오버플로우 (exif_process_IFD_TAG)

    • 악의적으로 조작된 이미지 파일을 서버가 처리할 때 힙 메모리 영역을 침범할 수 있습니다.
    • exif_read_data(), exif_imagetype() 등을 통해 사용자 업로드 이미지를 처리하는 애플리케이션이 직접적인 영향을 받습니다.
    • Laravel의 파일 업로드(Storage, Intervention Image 연동 포함) 기능과 함께 EXIF 정보를 읽는 코드가 있다면 최우선 패치 대상입니다.
  • Mail — 잠재적 힙 손상 (TSendMail()) (Bug #77821)

    • mail() 함수 사용 시 힙 메모리 손상이 발생할 수 있는 잠재적 취약점이 수정되었습니다.
    • Laravel의 Mail::send() 내부적으로 PHP 네이티브 mail() 드라이버를 사용하는 경우 해당됩니다 (MAIL_MAILER=mail 설정).

🟠 주요 버그 수정 (실무 영향도 높음)

PDO

  • Bug #77849 — PDO 핸들/연결 객체 복제(Clone) 비활성화
    • PDO 연결 객체를 clone하는 비표준적인 패턴을 사용하는 코드가 있다면 동작이 변경됩니다.
    • Laravel의 기본 Eloquent / Query Builder 사용 패턴에는 영향 없음.

PCRE

  • Bug #77827 — preg_match에서 정규식 플래그 내 \r 무시 처리
    • 특정 정규식 패턴에서 예상치 못한 동작이 수정되었습니다.
    • Laravel의 라우팅, 유효성 검사(Validator), 미들웨어 등 내부적으로 PCRE를 광범위하게 사용하므로 엣지 케이스 확인 필요.

Intl

  • Bug #77895 — IntlDateFormatter::create에서 $locale = null strict 모드 실패
    • Carbon 라이브러리를 로케일 지정과 함께 사용하거나, 다국어(i18n) 처리 시 IntlDateFormatter를 직접 사용하는 경우 영향받을 수 있습니다.

Standard 라이브러리

  • Bug #77844 — parse_ini_string Null 포인터 크래시 (INI_SCANNER_TYPED 사용 시)
  • Bug #77853 — substr_compare 빈 haystack 동작 불일치
  • Bug #77680 — FTP 스트림 래퍼에서 재귀 mkdir 오류

CLI 내장 서버

  • Bug #77794 — 내장 서버의 Date 헤더 형식 오류 수정
    • php artisan serve로 로컬 개발 시 HTTP Date 헤더가 올바르지 않게 출력되던 문제가 해결되었습니다.

LiteSpeed SAPI

  • LiteSpeed SAPI 7.3.1 업데이트: 프로세스 관리 개선 및 litespeed_finish_request() 함수 추가
    • 카페24, 닷홈 등 LiteSpeed 기반 국내 호스팅 서비스 이용 시 해당됩니다.

🟡 이전 마이너 버전의 주요 누적 수정 사항 (7.2.16 이하)

PHP 7.2.18 패키지에는 이전 버전의 변경 사항이 모두 포함됩니다. 7.2.16 이전 버전에서 업그레이드하는 경우 아래 변경 사항도 함께 적용됩니다.

  • MySQL LOCAL INFILE 기본 비활성화 (7.2.16, Bug #보안)

    • mysqli.allow_local_infile (php.ini) 또는 PDO::MYSQL_ATTR_LOCAL_INFILE 속성을 명시적으로 활성화하지 않으면 LOAD DATA LOCAL INFILE 구문이 동작하지 않습니다.
    • 데이터 마이그레이션 스크립트나 대용량 CSV 임포트 로직에서 해당 기능을 사용하는 경우 설정 변경이 필요합니다.
  • EXIF 다수 보안 수정 (7.2.16): exif_process_IFD_in_TIFF, SOFn, MAKERNOTE 관련 초기화되지 않은 읽기 취약점 4건 수정.

  • Mbstring 힙 버퍼 오버플로우 (7.2.14): 정규식 함수(mb_ereg* 계열) 관련 취약점 7건 수정. 한국어 처리에 Mbstring을 적극 활용하는 특성상 국내 개발 환경에서 특히 중요.

  • IMAP — 쉘 명령 실행 취약점 (7.2.13, Bug #77153): imap_open의 mailbox 파라미터를 통해 임의 쉘 명령 실행 가능. IMAP을 사용하는 메일 처리 로직 즉시 점검 필요.


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

호환성

항목영향
Laravel 5.x (5.7, 5.8)PHP 7.2 지원, 호환 문제 없음
Laravel 6.x (LTS)PHP 7.2 지원, 호환 문제 없음
Composer 의존성변경 없음, 재설치 불필요
ext-exif 사용 패키지동작 변경 없으나 보안 패치 적용됨

마이그레이션 노력

  • 코드 변경 불필요: 이번 릴리스는 버그 수정 및 보안 패치가 주 내용으로, API 변경 없음.
  • 주의 필요 사항:
    • PDO 객체를 clone하는 레거시 코드가 있다면 동작 변경 확인 필요 (Bug #77849).
    • PHP 7.2.16 미만에서 업그레이드 시 MySQL LOCAL INFILE 기본값 변경 반드시 확인.

보안 긴급도

취약점긴급도조건
CVE-2019-11036 (EXIF 힙 오버플로우)🔴 높음사용자 업로드 이미지 처리
Mail 힙 손상 (Bug #77821)🟠 중간MAIL_MAILER=mail 사용 시
IMAP 쉘 명령 실행 (Bug #77153, 7.2.13)🔴 높음IMAP 메일 처리 시
Mbstring 힙 오버플로우 (7.2.14)🟠 중간mb_ereg* 함수 + 외부 입력

로컬 툴링 노트

  • Laravel Valet (macOS): valet use php@7.2brew upgrade php@7.2로 업데이트. Homebrew의 PHP 7.2 formula가 7.2.18을 반영하는지 확인 필요.
  • Laravel Sail (Docker): sail/app:7.2 기반 이미지를 사용하는 경우 공식 이미지 업데이트 여부 확인 후 docker pull 재실행.
    docker pull laravelsail/php72-composer:latest
  • 국내 공유 호스팅 (카페24, 가비아 등): 호스팅 업체의 PHP 버전 업데이트 적용 시점이 다를 수 있으므로 지원팀에 7.2.18 적용 여부 확인 권장.
  • LiteSpeed 기반 호스팅: SAPI 7.3.1 업데이트로 프로세스 관리가 개선되어 응답 성능에 긍정적 영향 가능.

실무 체크리스트

로컬 환경

  • PHP 버전 확인: php -vPHP 7.2.18 출력 확인
  • EXIF 확장 활성화 여부 확인: php -m | grep exif
  • 이미지 업로드 처리 코드에서 exif_read_data() 사용 여부 검색
    grep -r "exif_read_data\|exif_imagetype" app/ --include="*.php"
  • .env에서 MAIL_MAILER=mail 여부 확인 → 가능하면 smtp 또는 mailgun 등으로 전환 검토
  • PDO 객체 clone 사용 여부 확인:
    grep -r "clone.*PDO\|clone.*pdo" app/ --include="*.php"
  • php artisan serve 실행 후 응답 헤더 Date 형식 정상 여부 확인 (개발 서버 사용 시)

스테이징 환경

  • PHP 7.2.18로 업그레이드 후 기존 테스트 스위트 전체 실행: php artisan test
  • MySQL LOCAL INFILE 관련 데이터 임포트 스크립트 동작 확인 (7.2.16 미만에서 업그레이드 시)
  • preg_match 사용 커스텀 유효성 검사 규칙 회귀 테스트 확인
  • Mbstring 관련 한국어 처리 로직 테스트: mb_ereg, mb_ereg_replace
  • IntlDateFormatter 또는 Carbon의 로케일 기능 사용 시 동작 확인

운영(Production) 환경

  • 배포 전 스테이징에서 전체 회귀 테스트 완료 확인
  • PHP 업그레이드 방법 (Ubuntu/Debian 예시):
    sudo apt-get updatesudo apt-get upgrade php7.2php -v  # 7.2.18 
  • PHP-FPM 재시작:
    sudo systemctl restart php7.2-fpm
  • Nginx/Apache 재시작 또는 reload
  • 배포 후 에러 로그 모니터링 (최소 30분): tail -f storage/logs/laravel.log
  • Sentry, Bugsnag 등 에러 트래킹 도구에서 배포 전후 에러율 비교
  • 7.2.16 미만에서 업그레이드 시: php.ini에서 mysqli.allow_local_infile 설정 값 검토 및 필요 시 명시적 활성화:
    ; php.ini mysqli.allow_local_infile = On ; 필요한 경우에만 활성화
  • opcache 캐시 초기화 (운영 서버 적용 후):
    php artisan opcache:clear  # opcache-clear   # 또는sudo systemctl restart php7.2-fpm

⚠️ 드래프트 주의사항: 본 문서는 검토용 초안입니다. PHP 7.2는 2020년 11월 공식 지원이 종료(EOL)된 버전입니다. 현재 신규 프로젝트라면 PHP 8.1 이상으로의 업그레이드를 적극 권장하며, 레거시 시스템 유지보수 목적으로만 이 패치를 적용하시기 바랍니다.