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-11042 | EXIF — heap-buffer-overflow on exif_process_user_comment | 7.2.21 |
| CVE-2019-11041 | EXIF — heap-buffer-overflow on exif_scan_thumbnail | 7.2.21 |
| CVE-2019-11040 | EXIF — heap-buffer-overflow on php_jpg_get16 | 7.2.19 |
| CVE-2019-11039 | Iconv — out-of-bounds read in _php_iconv_mime_decode() | 7.2.19 |
| CVE-2019-11038 | GD — uninitialized read in gdImageCreateFromXbm | 7.2.19 |
| CVE-2019-11036 | EXIF — heap-buffer-overflow in exif_process_IFD_TAG | 7.2.18 |
| CVE-2019-11035 | EXIF — heap-buffer-overflow in exif_iif_add_value | 7.2.17 |
| CVE-2019-11034 | EXIF — heap-buffer-overflow in php_ifd_get32s | 7.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.php의driver설정) 영향을 받습니다.
한국 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에서driver가argon또는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.json의require.php버전 제약을 재검토하고, 목표 PHP 버전에 맞게 업데이트한다. - 현재 사용 중인 Laravel 버전이 최신 PHP 버전을 지원하는지 Laravel 공식 지원 정책을 참조하여 확인한다.
📌 편집자 주: 이 문서는 검토용 초안입니다. PHP 7.2는 현재 EOL 상태이므로, 공식 보안 패치가 더 이상 제공되지 않습니다. 실무에서는 PHP 8.1 이상으로의 업그레이드를 강력히 권고합니다. 특정 서버 환경(예: Gabia, Cafe24 등 국내 호스팅)에서의 버전 가용성은 별도로 호스팅 업체에 확인이 필요합니다.