업데이트phplaravel업데이트
PHP 7.4.11 업데이트 — 한국 Laravel 개발자 영향 분석
작성: 라라벨 코리아 (초안)
발행: 2026년 8월 6일
## 요약
요약
PHP 7.4.11이 2020년 10월 1일 릴리스되었습니다. 이번 업데이트에는 쿠키 보안 취약점(CVE-2020-7070)과 OpenSSL 암호화 취약점(CVE-2020-7069)을 포함한 보안 패치 2건과 다수의 안정성 버그 수정이 포함되어 있습니다. Laravel 애플리케이션을 운영 중인 개발자라면 보안 취약점 대응을 위해 즉시 업그레이드를 검토해야 합니다.
핵심 내용
🔐 보안 수정 사항 (즉시 주의 필요)
CVE-2020-7070 — 악성 __Host- 쿠키 파싱 취약점
- 영향 영역: Core / 쿠키 처리
- PHP가 인코딩된 쿠키 이름을 파싱하는 과정에서
__Host-접두사를 가진 악성 쿠키가 전송될 수 있는 취약점입니다. __Host-쿠키는 보안 강화 목적으로 도메인 고정(host-only) 및 Secure 플래그가 강제되어야 하나, 이 취약점으로 인해 우회가 가능했습니다.- Laravel 관련성:
cookie()헬퍼,Cookie파사드, 세션 쿠키, CSRF 토큰 쿠키 등 쿠키를 적극 활용하는 Laravel 애플리케이션 전반에 영향을 미칩니다. 특히 금융, 인증 등 민감한 세션 관리가 필요한 서비스에서 주의가 필요합니다.
CVE-2020-7069 — OpenSSL AES-CCM 암호화 IV 처리 오류
- 영향 영역: OpenSSL 확장
- 12바이트 IV를 사용하는 AES-CCM 모드 암호화에서 잘못된 암호문(ciphertext) 및 인증 태그(tag)가 생성되는 버그입니다.
openssl_encrypt()/openssl_decrypt()를 직접 호출하거나, 이를 내부적으로 사용하는 패키지(예: JWT 라이브러리, 암호화 관련 패키지)를 사용하는 경우 영향을 받을 수 있습니다.- Laravel 관련성: Laravel의
Crypt파사드는 기본적으로 AES-256-CBC를 사용하므로 직접적인 영향은 낮으나, 커스텀 암호화 로직이나 서드파티 패키지에서 AES-CCM을 사용하는 경우 반드시 확인이 필요합니다.
🐛 주요 버그 수정
Core
| 버그 번호 | 설명 | Laravel 관련성 |
|---|---|---|
| #79979 | CUFA(call_user_func_array)를 통해 참조 파라미터에 값 전달 시 크래시 | call_user_func_array() 활용 코드에서 안정성 향상 |
| #80037 | __get() 선언 시 초기화 전 typed property 접근 오류 | PHP 7.4 typed property 사용 시 관련 |
| #80049 | 가변 인자(variadic)를 통한 정수→문자열 강제 변환 시 메모리 누수 | 장기 실행 큐 워커, Octane 환경에서 유의 |
OPcache
opcache.file_cache사용 시 커스텀 opcode 핸들러 변경으로 인한 SIGSEGV(세그멘테이션 폴트) 수정 (#79825)- SWITCH_STRING 최적화 관련 FREE 명령어 오류 수정 (#80046)
- 새 인터닝 문자열의 여유 공간 계산 오류 수정 (#80002)
- Laravel 관련성:
php.ini에서opcache.file_cache를 활성화한 환경(특히 Docker/Sail 기반 개발 환경)에서 안정성이 크게 향상됩니다.
PDO
- 많은 수의 바인드 파라미터를 사용하는 쿼리에서
$query->fetch()성능 저하 수정 (#80027) - Laravel 관련성: Eloquent ORM이나 Query Builder에서 복잡한 쿼리(
whereIn()등 다수의 바인딩 사용)를 실행할 때 성능 개선 효과를 기대할 수 있습니다.
Standard
str_ireplace()함수에서 발음 구별 기호(diacritics) 문자 처리 버그 수정 (#79986)- Laravel 관련성: 다국어(i18n/l10n) 지원, 특히 베트남어·프랑스어·스페인어 등 발음 구별 기호가 포함된 언어를 처리하는 애플리케이션에서 유의미합니다. 한국어 직접 영향은 낮으나 다국어 서비스 운영 시 확인 권장.
📋 7.4.8 ~ 7.4.10의 누적 주요 수정 (미적용 시 함께 반영됨)
7.4.11 이전 버전에서 업그레이드하는 경우 아래 수정 사항도 함께 적용됩니다.
- CVE-2020-7067 (7.4.5):
urldecode()에서 OOB(out-of-bounds) 읽기 취약점 - CVE-2020-7068 (7.4.9): Phar 파싱 중 해제된 해시 키 사용(use-after-free) 취약점
- LDAP 메모리 누수 수정 (7.4.10): LDAP 인증을 사용하는 엔터프라이즈 환경에 영향
array_merge_recursive()크래시 (7.4.10): 단일 참조를 포함하는 배열 사용 시 크래시 수정str_replace()빈 문자열 메모리 누수 (7.4.10): 장기 실행 프로세스에서 메모리 사용량에 영향- MySQLnd FLOAT 로케일 문제 (7.4.7): 일부 로케일에서 MySQL FLOAT 값이 정수로 잘리는 버그 수정 — 한국 서버 환경(
ko_KR.UTF-8로케일)에서도 잠재적 영향 가능성이 있었음
한국 Laravel 개발자에게 미치는 영향
보안 긴급도: ⚠️ 높음
CVE-2020-7070(쿠키 파싱)은 웹 애플리케이션의 세션 보안과 직결되므로, 운영 환경 즉시 패치를 강력히 권장합니다.
호환성
- PHP 7.4.x 마이너 업데이트로, 하위 호환성 파괴(breaking change)는 없습니다.
- Laravel 6.x(LTS), 7.x, 8.x 모두 PHP 7.4를 지원하므로 별도의 코드 수정 없이 PHP만 업데이트하면 됩니다.
- Composer 의존성 재설치는 불필요합니다.
Laravel Sail (Docker 환경)
# sail 이미지에서 PHP 버전 확인./vendor/bin/sail php -v# 이미지 재빌드가 필요한 경우./vendor/bin/sail build --no-cache- Sail의 공식 Docker 이미지(
laravelsail/php74-composer)가 7.4.11 이상으로 업데이트되었는지 확인하세요. - 로컬 개발 환경에서는
docker pull로 최신 이미지를 가져온 후 컨테이너를 재시작하면 됩니다.
Laravel Valet (macOS)
# Homebrew를 통한 PHP 업데이트brew upgrade php@7.4# Valet 재시작valet restartvalet use php@7.4명령으로 PHP 버전을 명시적으로 지정한 경우, Homebrew 업데이트 후 valet 서비스를 재시작해야 반영됩니다.
Docker 기반 운영 환경
php:7.4-fpm또는php:7.4-cli공식 Docker 이미지는 7.4.11로 태그가 업데이트되어 있으니,docker pull php:7.4-fpm후 컨테이너를 재배포하세요.php:7.4.11-fpm과 같이 명시적 버전 태그를 사용하는 경우,Dockerfile의 이미지 태그를 직접 수정해야 합니다.
opcache.file_cache 사용자 주의
- 7.4.11에서 file cache 관련 SIGSEGV 버그가 수정되었으므로, 기존에 이 옵션을 비활성화했던 경우 재활성화를 고려할 수 있습니다.
- 업데이트 후 기존 opcache 캐시를 초기화하는 것을 권장합니다.
실무 체크리스트
로컬 개발 환경
- 현재 PHP 버전 확인:
php -v - Homebrew(macOS):
brew upgrade php@7.4실행 후php -v로 7.4.11 확인 - Sail(Docker):
./vendor/bin/sail build --no-cache또는 최신 이미지 pull - 직접 설치: 공식 패키지 관리자(apt, yum 등)로 업데이트
- Valet 사용 시
valet restart실행 -
php artisan serve로 애플리케이션 정상 구동 확인 - OPcache file cache 사용 시 캐시 디렉토리 초기화
스테이징 환경
- PHP 7.4.11 업데이트 적용
- OPcache 캐시 플러시:
php artisan opcache:clear또는 PHP-FPM 재시작 - 쿠키 관련 기능 테스트 (로그인, 세션, CSRF)
- PDO를 사용하는 복잡한 쿼리 성능 회귀 테스트
- OpenSSL 암호화를 직접 사용하는 기능 테스트 (AES-CCM 사용 여부 확인)
-
str_ireplace()를 사용하는 다국어 처리 기능 테스트 (해당 시) - 큐 워커 장기 실행 시 메모리 사용량 모니터링
- 애플리케이션 로그에서 새로운 에러/경고 발생 여부 확인
운영(프로덕션) 환경
- 배포 전 반드시 스테이징에서 검증 완료
- 배포 시간대 선정 (트래픽 최소 시간대 권장)
- PHP 업데이트 전 현재 PHP 버전 스냅샷/기록
- PHP 7.4.11 패키지 업데이트:
# Ubuntu/Debian (ondrej/php PPA 기준)sudo apt-get updatesudo apt-get install --only-upgrade php7.4 php7.4-fpm php7.4-common# CentOS/RHEL (Remi 레포지토리 기준)sudo yum update php74 - PHP-FPM 재시작:
sudo systemctl restart php7.4-fpm - Nginx/Apache 설정 변경 없이 PHP-FPM만 재시작으로 충분한지 확인
- OPcache 캐시 초기화 (PHP-FPM 재시작으로 자동 처리되나, file cache 사용 시 별도 삭제 필요)
- 업데이트 후 헬스체크 엔드포인트 및 주요 기능 스모크 테스트
- 에러 모니터링 도구(Sentry, Bugsnag 등)에서 이상 징후 모니터링 (최소 30분)
- 롤백 플랜 준비: 이전 PHP 버전 패키지 보관 또는 스냅샷
⚠️ 주의: 이 문서는 드래프트로 작성되었으며, 실제 배포 전 공식 PHP 변경 로그 및 자사 애플리케이션 특성에 맞게 추가 검토를 권장합니다. AES-CCM 사용 여부 및
__Host-쿠키 활용 여부는 코드베이스에 따라 영향도가 달라집니다.