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

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

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

발행: 2026년 8월 6일

## 요약

요약

PHP 7.4.0이 2019년 11월 28일 공식 GA(General Availability) 버전으로 릴리스되었습니다. 타입 프로퍼티, 애로우 함수, Preloading, FFI 등 Laravel 개발에 직접적인 영향을 미치는 대형 기능들이 다수 포함되어 있습니다. 동시에 여러 Deprecation과 보안 패치가 함께 적용되어 기존 코드베이스에 대한 호환성 점검이 필수입니다.


핵심 내용

🆕 주요 신규 기능

타입 프로퍼티 (Typed Properties)

class User extends Model { public int $id; public string $name; public ?Carbon $email_verified_at; }

클래스 프로퍼티에 타입을 직접 선언할 수 있게 되었습니다. Laravel Eloquent 모델과 함께 사용할 경우 런타임 타입 안전성을 높일 수 있으나, 초기화되지 않은 프로퍼티 접근 시 Error가 발생하므로 주의가 필요합니다.

애로우 함수 (Arrow Functions)

// 기존 $multiplier = 3; $result = array_map(function ($value) use ($multiplier) { return $value * $multiplier; }, $numbers); // PHP 7.4 이후 $result = array_map(fn($value) => $value * $multiplier, $numbers);

외부 변수를 use 없이 자동으로 캡처합니다. Laravel 컬렉션의 콜백, map(), filter() 등에서 코드가 간결해집니다.

Opcache Preloading

; php.ini opcache.preload=/var/www/html/preload.php opcache.preload_user=www-data

서버 시작 시 PHP 파일을 메모리에 미리 올려두는 기능입니다. Laravel 프레임워크 코어 파일을 preload하면 요청당 파싱 비용을 줄일 수 있습니다. opcache.preload_user INI 지시어도 함께 추가되었습니다.

FFI (Foreign Function Interface) 추가

C 라이브러리를 PHP에서 직접 호출할 수 있는 FFI 확장이 추가되었습니다. 일반 웹 애플리케이션에서 즉시 사용할 일은 드물지만, 퍼포먼스 크리티컬한 연산이나 네이티브 바이너리 연동이 필요한 경우 활용 가능합니다.

Null 병합 대입 연산자 (Null Coalescing Assignment)

// 기존 $data['key'] = $data['key'] ?? 'default'; // PHP 7.4 이후 $data['key'] ??= 'default';

Laravel의 세션, 설정값 처리 코드 등에서 자주 쓰이는 패턴을 간결하게 작성할 수 있습니다.

언더스코어 숫자 구분자

$price = 1_000_000; // 백만 $hex = 0xFF_AA_00;

가독성 향상을 위한 문법 추가입니다.

배열 언패킹 (Spread Operator in Array)

$first = [1, 2, 3]; $second = [4, 5, 6]; $merged = [...$first, ...$second];

array_key_exists() 성능 최적화

array_key_exists()가 opcache에서 특별 컴파일 함수 목록에 추가되어 내부적으로 성능이 향상되었습니다. Laravel의 컨테이너 바인딩, 설정 조회 등에서 미세한 성능 향상을 기대할 수 있습니다.

Hash 확장 기본 내장

hash 확장이 이제 PHP 코어의 일부로 항상 포함됩니다. 별도로 컴파일 옵션에서 비활성화할 수 없습니다. Laravel이 의존하는 다양한 해시 기능의 안정성이 높아졌습니다.

TLS 1.3 스트림 지원 (OpenSSL)

$context = stream_context_create([ 'ssl' => ['crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT] ]);

tlsv1.3 스트림 컨텍스트가 추가되었으며, openssl_x509_verify() 함수도 신규 추가되었습니다.


⚠️ Deprecation (제거 예정 경고)

아래 항목들은 PHP 7.4에서 E_DEPRECATED 경고를 발생시키며, 향후 PHP 8.x에서 제거될 예정입니다.

항목내용
중괄호 배열/문자열 접근$arr{0}$arr[0] 로 변경 필요
CURLPIPE_HTTP1cURL 파이프라인 상수 deprecated
curl_version() $version 파라미터불필요한 파라미터 deprecated
COM 확장 대소문자 무시 상수 등록case-insensitive constants from typelibs
ldap_control_paged_result_response, ldap_control_paged_resultLDAP 페이징 함수 deprecated
imagecropauto() -1 파라미터IMG_CROP_DEFAULT 사용 권장
idn_to_ascii(), idn_to_utf8() 기본 $variant 변경Intl 관련 동작 변경

실무 주의: 레거시 프로젝트에서 $arr{0} 문법을 사용하고 있다면 PHP 7.4 업그레이드 전 일괄 치환이 필요합니다.


🔒 보안 패치

CVE영역내용
CVE-2019-11042Exifexif_process_user_comment에서 heap-buffer-overflow
CVE-2019-11041Exifexif_scan_thumbnail에서 heap-buffer-overflow
CVE-2019-11043FPMfpm_main.cenv_path_info underflow로 인한 원격 코드 실행(RCE) 가능성

CVE-2019-11043는 특정 Nginx + PHP-FPM 구성에서 원격 코드 실행이 가능한 심각도 높은 취약점입니다. PHP-FPM을 사용하는 프로덕션 서버라면 즉시 업그레이드를 검토해야 합니다.


🗑️ 제거된 기능

  • InterBase 확장: PHP 코어에서 제거되어 PECL로 이동되었습니다. InterBase/Firebird를 직접 사용하는 프로젝트는 별도 PECL 설치가 필요합니다.

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

Laravel 버전 호환성

  • PHP 7.4.0 기준으로 Laravel 6.x (LTS), 7.x 버전이 공식적으로 지원됩니다.
  • Laravel 5.x 대를 사용 중인 경우, PHP 7.4와의 호환성 문제가 발생할 수 있으므로 사전에 php artisan vendor:publish 이후 패키지 의존성 전체 점검이 필요합니다.

Composer 패키지 의존성

composer update --dry-run

일부 오래된 패키지들이 중괄호 배열 접근($arr{0})을 사용하거나, deprecated된 함수를 호출할 수 있습니다. dry-run으로 먼저 충돌을 확인하세요.

PHP-FPM 사용 서버 (CVE-2019-11043 긴급 대응)

Nginx + PHP-FPM 조합으로 운영 중인 서버는 이 취약점에 노출될 수 있습니다. 아래 Nginx 설정이 적용되어 있다면 특히 위험합니다:

# 취약한 설정 예시 fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info;

PHP 7.4.0으로 업그레이드하거나, 이미 PHP 7.3을 사용 중이라면 7.3.11 이상으로 패치하는 것이 안전합니다.

Laravel Valet (macOS)

valet use php@7.4

Homebrew를 통해 php@7.4를 설치한 후 Valet에서 PHP 버전을 전환할 수 있습니다. 타입 프로퍼티, 애로우 함수 등 신규 문법을 로컬에서 즉시 테스트할 수 있습니다.

Laravel Sail (Docker)

docker-compose.yml에서 이미지 태그를 확인하세요:

# sail/runtimes 또는 laravelsail/php74 이미지 사용 가능 image: sail-7.4/app

Sail을 사용하는 경우 .env의 PHP 버전 설정을 7.4로 맞추고 sail build --no-cache로 재빌드합니다.

한국어 처리 (MBString)

Fixed bug #77907 (mb-functions do not respect default_encoding). (Nikita)

한국어 문자열 처리에 자주 사용되는 mb_* 함수들이 default_encoding 설정을 올바르게 따르지 않던 버그가 수정되었습니다. 한국어 입출력, 인코딩 변환 로직을 가진 프로젝트에서는 이 수정이 기존 동작을 변경할 수 있으므로 테스트가 필요합니다.

이주 난이도 평가

항목난이도비고
중괄호 배열 접근 제거낮음sed/regex로 일괄 치환 가능
타입 프로퍼티 도입선택적기존 코드 영향 없음
mb_* 인코딩 동작 변경중간한국어 처리 로직 테스트 필수
CVE-2019-11043 패치높음PHP-FPM 사용 시 즉시 대응
InterBase 제거해당 시 높음미사용 시 영향 없음

실무 체크리스트

로컬 환경

  • PHP 7.4.0 설치 후 php -v로 버전 확인
  • php -d error_reporting=E_ALL your_script.php로 Deprecated 경고 전수 확인
  • $arr{0} 형태의 중괄호 배열 접근 코드 일괄 검색 및 수정
    grep -rn '\$[a-zA-Z_][a-zA-Z0-9_]*{[0-9]' ./app ./config ./resources
  • composer update --dry-run으로 패키지 의존성 충돌 사전 확인
  • mb_* 함수 관련 한국어 처리 단위 테스트 실행
  • PHPUnit 기반 기존 테스트 스위트 전체 실행 및 통과 확인
  • 애로우 함수, Null 병합 대입 연산자 도입 검토 (신규 코드에 적용)

스테이징 환경

  • PHP-FPM 사용 여부 확인 → Nginx 설정에서 PATH_INFO 관련 설정 점검 (CVE-2019-11043)
  • .envphp.ini 설정 비교 (opcache.preload 신규 지시어 등)
  • Laravel 로그(storage/logs/laravel.log)에서 Deprecated 경고 발생 여부 모니터링
  • Exif 이미지 업로드 기능이 있는 경우 CVE-2019-11041/11042 관련 동작 확인
  • Preloading 설정 적용 테스트 (성능 측정 포함)
    opcache.preload=/var/www/html/preload.php opcache.preload_user=www-data opcache.enable=1
  • TLS 1.3 관련 외부 API 통신 테스트 (금융/결제 연동 서비스 포함)

프로덕션 환경

  • CVE-2019-11043 패치 우선 적용 — PHP-FPM + Nginx 환경이라면 즉시 업그레이드
  • 배포 전 스테이징에서 전체 회귀 테스트 완료 확인
  • PHP-FPM pm.max_children, pm.start_servers 등 설정값 재검토 (Preloading 메모리 사용량 증가 대비)
  • 서버 배포 후 opcache_get_status()로 캐시 상태 확인
    var_dump(opcache_get_status());
  • APM(New Relic, Datadog, Blackfire 등) 에이전트 PHP 7.4 지원 버전 확인 및 업데이트
  • 모니터링 대시보드에서 배포 후 에러율, 응답 시간 이상 징후 감지 설정
  • InterBase/Firebird 연동 코드가 있는 경우 PECL interbase 확장 별도 설치 확인
  • 롤백 플랜 준비 (PHP 버전 다운그레이드 절차 문서화)

편집자 주: 이 문서는 드래프트입니다. CVE-2019-11043의 정확한 영향 범위(Nginx 버전, 설정 조건)는 배포 전 공식 보안 권고문을 별도로 참조하시기 바랍니다. 또한 Laravel 버전별 PHP 7.4 공식 지원 범위는 laravel.com/docs의 서버 요구사항 페이지에서 재확인을 권장합니다.