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

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

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

발행: 2026년 8월 6일

## 요약

요약

PHP 7.2.22는 2019년 8월 29일에 릴리스된 보안 및 버그 수정 버전입니다. Core의 버퍼 오버플로우, Exif 크래시, cURL 리소스 오류, OPcache 어서션 실패 등 다수의 안정성 문제가 수정되었으며, 이전 마이너 버전(7.2.19~7.2.21)에서 패치된 여러 CVE 보안 취약점들을 포함한 누적 업데이트입니다. PHP 7.2 브랜치를 사용 중인 한국 Laravel 개발자는 가능한 한 빠른 업그레이드를 권장합니다.


핵심 내용

🔐 보안 취약점 (CVE 항목)

7.2.22에 이르기까지의 마이너 릴리스들에 포함된 CVE 항목은 다음과 같습니다. 7.2.22 자체는 직접 CVE 번호가 명시된 수정은 없지만, 버퍼 오버플로우 및 크래시 관련 버그들이 포함되어 있습니다.

CVE영향 컴포넌트릴리스 버전
CVE-2019-11042EXIF — heap-buffer-overflow on exif_process_user_comment7.2.21
CVE-2019-11041EXIF — heap-buffer-overflow on exif_scan_thumbnail7.2.21
CVE-2019-11040EXIF — heap-buffer-overflow on php_jpg_get167.2.19
CVE-2019-11039Iconv — out-of-bounds read in _php_iconv_mime_decode()7.2.19
CVE-2019-11038GD — uninitialized read in gdImageCreateFromXbm7.2.19
CVE-2019-11036EXIF — heap-buffer-overflow in exif_process_IFD_TAG7.2.18
CVE-2019-11035EXIF — heap-buffer-overflow in exif_iif_add_value7.2.17
CVE-2019-11034EXIF — heap-buffer-overflow in php_ifd_get32s7.2.17

⚠️ EXIF 관련 취약점 집중: 이미지 업로드 기능을 제공하는 Laravel 애플리케이션(특히 사용자 사진, 갤러리, 미디어 관리 서비스)은 해당 CVE들에 직접적으로 노출될 수 있습니다. exif_read_data(), getimagesize() 등을 사용하는 코드를 즉시 점검해야 합니다.


🐛 7.2.22의 주요 버그 수정

Core

  • Bug #78363: zendparse 내 버퍼 오버플로우 수정 — 특정 PHP 코드 파싱 시 크래시 유발 가능성이 있었습니다.
  • Bug #78379: 객체로 캐스팅 시 GC(가비지 컬렉터)를 혼란시켜 크래시를 유발하는 문제 수정 — 복잡한 객체 그래프를 다루는 Laravel 애플리케이션에서 재현될 수 있는 문제였습니다.

cURL

  • Bug #77946: curl_multi_info_read()가 잘못된 cURL 리소스를 반환하는 문제 수정 — Laravel의 HTTP 클라이언트(Http::pool() 등 병렬 요청)를 사용하는 경우 영향을 받을 수 있습니다.

Exif

  • Bug #78333: 잘못된 정렬 및 캐스트로 인한 Exif 버스 에러(크래시) 수정.

OPcache

  • Bug #77191: 에러 억제 연산자(@) 사용 시 dce_live_ranges() 어서션 실패 수정 — OPcache가 활성화된 프로덕션 환경에서 특정 코드 패턴이 서버 프로세스를 종료시킬 수 있었습니다.

MySQLnd

  • Bug #78179: MariaDB 서버 버전이 잘못 감지되는 문제 수정 — MariaDB를 데이터베이스로 사용하는 환경(국내 일부 호스팅 환경 포함)에서 드라이버 동작 오류를 방지합니다.

Standard

  • Bug #78326: stream_get_contents()에서 고정 길이 버퍼 사용 시 메모리 잘못 해제 문제 수정 — 파일 스트림이나 소켓 스트림을 처리하는 코드에서 메모리 안전성 문제가 있었습니다.
  • Bug #69100: stream_copy_to_stream(파일 → SSL 스트림) 시 버스 에러 수정.
  • Bug #78282: atime/mtime 불일치 수정.

📋 7.2.16에서 주목할 변경 사항 (Breaking Change 주의)

MySQL LOCAL INFILE 기본값 변경 (7.2.16):

Disabled LOCAL INFILE by default, can be enabled using php.ini directive
mysqli.allow_local_infile for mysqli, or PDO::MYSQL_ATTR_LOCAL_INFILE attribute for pdo_mysql.

이전 버전에서 7.2.16 이상으로 업그레이드하는 경우, LOAD DATA LOCAL INFILE을 사용하는 배치 처리나 데이터 임포트 스크립트가 동작하지 않을 수 있습니다. 필요한 경우 명시적으로 활성화해야 합니다.


🗄️ SQLite 업그레이드 (7.2.21)

번들된 SQLite가 3.28.0으로 업그레이드되었습니다. Laravel 테스트 환경에서 :memory: SQLite를 사용하는 경우, 이 버전 업그레이드로 인해 동작이 개선됩니다.


🔑 password_hash() argon2 옵션 보안 강화 (7.2.21)

  • Bug #78269: password_hash()의 argon2 알고리즘이 취약한 기본 옵션을 사용하던 문제 수정 — Laravel의 Hash::make() 내부적으로 argon2를 사용하도록 설정한 경우(config/hashing.phpdriver 설정) 영향을 받습니다.

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

호환성

  • Laravel 5.x ~ 6.x: PHP 7.2를 지원하는 Laravel 버전과 완전히 호환됩니다. 7.2.22로의 업그레이드는 기존 애플리케이션을 변경하지 않아도 됩니다.
  • PHP 8.x로의 마이그레이션 고려: PHP 7.2는 공식 보안 지원이 종료(EOL: 2019년 11월 30일)를 앞두고 있었습니다. 본 릴리스는 7.2 브랜치의 마지막 안정 릴리스 중 하나입니다. 아직 PHP 7.2를 운영 중인 팀은 PHP 8.x로의 마이그레이션을 즉시 계획해야 합니다.

보안 긴급도

  • 높음(High): EXIF 관련 CVE가 다수 포함되어 있으며, 이미지 업로드/처리 기능이 있는 서비스는 즉시 업그레이드가 필요합니다.
  • Iconv 및 GD 관련 취약점도 파일 처리와 관련된 기능에서 위험할 수 있습니다.

로컬 개발 환경별 참고사항

환경영향 및 조치
Laravel Valet (macOS)brew upgrade php@7.2 또는 valet use php@7.2로 업그레이드. Homebrew의 7.2 포뮬라가 최신 패치를 반영하는지 확인 필요
Laravel Sail (Docker)sail/app Docker 이미지의 PHP 버전 태그를 확인하고, docker pull 후 컨테이너를 재빌드 (docker-compose build --no-cache)
Docker 커스텀 이미지Dockerfile의 베이스 이미지(php:7.2-fpm 등)를 php:7.2.22-fpm으로 명시하거나, 최신 php:7.2-fpm으로 재빌드
국내 호스팅/서버cPanel, Plesk, AWS EC2 등에서 OS 패키지 매니저(yum, apt)를 통한 업데이트. Remi 저장소 등 PHP 전용 저장소 사용 시 7.2.22 패키지 가용 여부를 확인
MariaDB 사용 환경Bug #78179 수정으로 MariaDB 버전 감지 문제가 해결됩니다. 국내 일부 공유 호스팅은 MySQL 대신 MariaDB를 사용하는 경우가 많으므로 특히 유의하세요.

실무 체크리스트

로컬 환경

  • PHP 버전 확인: php -v로 현재 버전을 확인한다.
  • 이미지 처리 코드 점검: exif_read_data(), getimagesize(), imagecreatefromjpeg() 등을 사용하는 컨트롤러/서비스를 목록화한다.
  • argon2 해시 드라이버 사용 여부 확인: config/hashing.php에서 driverargon 또는 argon2id인지 확인한다.
  • LOAD DATA LOCAL INFILE 사용 여부 확인: 데이터베이스 시더, 배치 스크립트에서 해당 구문 사용 여부를 검색한다.
    grep -r "LOCAL INFILE" ./database ./app
  • cURL 병렬 요청 코드 점검: Http::pool() 또는 curl_multi_* 함수 사용 코드를 확인한다.

스테이징 환경

  • PHP 7.2.22로 업그레이드 후 애플리케이션 전체 회귀 테스트를 실행한다.
    php artisan test
  • OPcache가 활성화된 상태에서 에러 억제 연산자(@)를 사용하는 코드가 정상 동작하는지 확인한다.
  • 이미지 업로드 기능(프로필 사진, 게시물 첨부 파일 등)을 다양한 포맷(JPEG, TIFF, PNG)으로 테스트한다.
  • MariaDB 사용 환경이라면 데이터베이스 연결 및 버전 감지가 정상인지 확인한다:
    // tinker에서 확인 DB::select('SELECT VERSION()');
  • stream_get_contents() 또는 stream_copy_to_stream()을 사용하는 파일 처리 로직을 테스트한다.

프로덕션 환경

  • 업그레이드 전 현재 PHP 버전 및 설정을 백업한다 (php.ini, php-fpm.conf 등).
  • 패키지 매니저로 업그레이드를 적용한다:
    # Ubuntu/Debian (Ondrej PPA 사용 시) sudo apt update && sudo apt upgrade php7.2 # CentOS/RHEL (Remi 저장소 사용 시) sudo yum update php72
  • PHP-FPM 서비스를 재시작한다:
    sudo systemctl restart php7.2-fpm# 또는 nginx/apache 재로드sudo systemctl reload nginx
  • OPcache를 초기화한다:
    php artisan opcache:clear # 또는 직접 php -r "opcache_reset();"
  • 업그레이드 후 애플리케이션 로그(storage/logs/laravel.log)에서 새로운 에러 발생 여부를 모니터링한다.
  • PHP 에러 로그 및 PHP-FPM slow log를 최소 24시간 모니터링한다.

장기 계획 (⚠️ 중요)

  • PHP 7.2는 EOL 상태입니다. PHP 7.4 또는 PHP 8.x로의 마이그레이션 일정을 수립하고 담당자를 지정한다.
  • composer.jsonrequire.php 버전 제약을 재검토하고, 목표 PHP 버전에 맞게 업데이트한다.
  • 현재 사용 중인 Laravel 버전이 최신 PHP 버전을 지원하는지 Laravel 공식 지원 정책을 참조하여 확인한다.

📌 편집자 주: 이 문서는 검토용 초안입니다. PHP 7.2는 현재 EOL 상태이므로, 공식 보안 패치가 더 이상 제공되지 않습니다. 실무에서는 PHP 8.1 이상으로의 업그레이드를 강력히 권고합니다. 특정 서버 환경(예: Gabia, Cafe24 등 국내 호스팅)에서의 버전 가용성은 별도로 호스팅 업체에 확인이 필요합니다.