Laravel 13.15.0 업데이트
릴리스: 2026년 6월 9일
평가: 2026년 8월 28일
Laravel 13.15.0은 마이너 릴리스로, 대부분 12.x 백포트 버그 수정과 13.x 자체의 소규모 수정 및 리팩터링으로 구성되어 있습니다. 다만 보안 관련 수정 두 건(date_equals 검증 우회, 라우팅 역직렬화 클래스 제한)이 포함되어 있어 해당 기능을 사용하는 경우 확인이 필요합니다. 나머지는 대부분 버그 수정이므로 일반 애플리케이션은 통상적인 업그레이드로 충분합니다.
패키지 관리자가 확인할 것
- Http (illuminate/http)위험도 낮음
첨부파일 URL 스킴 제한(#60035, narrow attachment url scheme) 및 빈 첨부파일 내용 보존(#60291) 관련 수정이 포함되어 있어, 파일 첨부/다운로드 기능을 사용하는 경우 동작 확인 권장.
대응 체크리스트
- date_equals 검증 규칙 사용처 점검가까운 시일
느슨한 비교로 인한 검증 우회 취약점이 수정되었습니다(#60393). validation 규칙에 date_equals를 사용 중이라면 업그레이드 후 관련 폼 검증이 의도대로 동작하는지 테스트하세요.
- 라우트 캐시/직렬화 관련 코드 점검가까운 시일
라우팅 역직렬화 시 허용 클래스를 제한하는 보안 수정이 적용되었습니다(#60391). 커스텀 라우트 직렬화나 라우트 캐시를 다루는 코드가 있다면 영향 여부를 확인하세요.
- Number 헬퍼 사용 코드 재검증선택
Number::fileSize() 음수 처리, Number::trim() INF/NAN 처리, Number::pairs() 무한루프 버그가 수정되었습니다. 해당 메서드를 사용 중이면 엣지케이스 동작이 바뀌었는지 확인하세요.
- 일반 업그레이드 진행선택
composer update laravel/framework 실행 후 테스트 스위트 실행으로 회귀 여부 확인.
자동 생성상세 평가
요약
Laravel 13.15.0은 마이너 릴리스이며, 대부분 12.x에서 백포트된 버그 수정과 13.x 자체의 소규모 개선·리팩터링·독블록 수정으로 구성되어 있습니다. API를 깨뜨리는 명시적 변경 사항은 릴리스 노트에 언급되지 않았습니다.
주요 변경
- 보안 관련 수정 2건:
date_equals검증 규칙의 느슨한 비교로 인한 검증 우회 수정(#60393), 라우팅 역직렬화 시 허용 클래스 제한(#60391). - 버그 수정 다수:
Number::fileSize()음수 처리,Number::trim()의 INF/NAN 처리,Number::pairs()무한루프, FIFO 큐 이름 정규화,LocalFilesystemAdapter경로 구분자 인코딩 문제 등. - 신규 기능/개선:
InvokedProcess에 Macroable 추가,Queue::route에서 enum 허용,cache:clear/queue:flush에 Prohibitable 적용, 타입이 지정된 번역 접근자(typed translation accessors) 추가, JSON Schema 배열/유니온 타입 디시리얼라이저 추가. - Cloud Queue 관련 다수 변경(전용 관리형 큐, 헤더 이름 변경, 예외 처리 등)은 Laravel Cloud 사용자에게 해당.
하위 호환성
릴리스 노트에 공개 API를 깨뜨리는 변경으로 명시된 항목은 없습니다. 다만 보안 수정으로 인해 date_equals 검증 규칙의 동작이 엄격해졌을 수 있으므로, 기존에 느슨한 비교에 의존한 검증 로직이 있었다면 동작 차이가 발생할 수 있습니다.
패키지 관리자가 확인할 것
- Http (illuminate/http): 첨부파일 URL 스킴 제한 및 빈 첨부파일 내용 보존 수정이 포함되어 있어, 메일 첨부나 HTTP 클라이언트로 파일을 다루는 기능이 있다면 동작을 재확인하세요.
- 이 외 등록된 패키지들(Sendgo, Core, Inertia Laravel, Scout, Socialite 계열, Image, Breadcrumbs 등)에 직접 영향을 주는 변경 사항은 릴리스 노트에서 확인되지 않았습니다.
대응 체크리스트
-
date_equalsvalidation 규칙을 사용 중이라면 업그레이드 후 검증 동작 재테스트 - 커스텀 라우트 직렬화/캐시 로직이 있다면 영향 여부 확인
-
Number::fileSize(),Number::trim(),Number::pairs()사용처가 있다면 엣지케이스 재확인 -
composer update laravel/framework후 전체 테스트 스위트 실행 - Laravel Cloud 관리형 큐를 사용 중이라면 헤더 이름 변경(
X-Request-ID→Cloud-Request-ID) 및 관련 예외 처리 변경 확인
GitHub 릴리스 노트를 근거로 언어 모델 (claude-sonnet-5)이 작성했으며, 사람이 검수하지 않았습니다. 실제 적용 전에는 공식 릴리스 노트와 업그레이드 가이드를 함께 확인하세요.
GitHub 원문 릴리스 노트 보기
- [12.x] Fix infinite recursion when defining model scope with attribute as private by @noefleury in https://github.com/laravel/framework/pull/59958
- [12.x] Fix infinite recursion when middleware group referencing itself by @noefleury in https://github.com/laravel/framework/pull/60002
- [12.x] Backport #60000 to 12.x by @iWader in https://github.com/laravel/framework/pull/60006
- [12.x] Narrow attachment url scheme by @benbjurstrom in https://github.com/laravel/framework/pull/60035
- [12.x] backport #60045 to 12.x by @levikl in https://github.com/laravel/framework/pull/60052
- [12.x] Back port cloud queues by @timacdonald in https://github.com/laravel/framework/pull/60122
- [12.x] Fix Number::fileSize() handling of negative byte values by @Amirhf1 in https://github.com/laravel/framework/pull/60147
- [12.x] Remove stale PHPStan ignore comments from type tests by @jradtilbrook in https://github.com/laravel/framework/pull/60167
- [12.x] Output cloud request ID in logs by @jradtilbrook in https://github.com/laravel/framework/pull/60166
- [12.x] Dedicated Cloud Queue by @kieranbrown in https://github.com/laravel/framework/pull/60181
- [12.x] Rename X-Request-ID header to Cloud-Request-ID by @kieranbrown in https://github.com/laravel/framework/pull/60189
- [12.x] Boot managed queues before service providers boot by @kieranbrown in https://github.com/laravel/framework/pull/60199
- [12.x] Accept Symfony's new control-characters exception message in mailer test by @kieranbrown in https://github.com/laravel/framework/pull/60203
- [12.x] Fix queue:failed command to show real class name by @clementmas in https://github.com/laravel/framework/pull/60279
- [12.x] Throw ManagedQueueNotFoundException when a managed queue is missing by @kieranbrown in https://github.com/laravel/framework/pull/60276
- [12.x] Preserve empty HTTP attach contents by @GrahamCampbell in https://github.com/laravel/framework/pull/60291
- Fix @params typo in Fluent and MessageBag toPrettyJson() docblocks by @Amirhf1 in https://github.com/laravel/framework/pull/60313
- [12.x] Fix regex typo in Env::addVariableToEnvContents that prevented quotin… by @Amirhf1 in https://github.com/laravel/framework/pull/60312
- [12.x] Fix Number::trim() returning null for INF and NAN values by @Amirhf1 in https://github.com/laravel/framework/pull/60322
- [12.x] Fix FIFO queue name normalization in Cloud managed queues by @kieranbrown in https://github.com/laravel/framework/pull/60316
- [12.x] Fix Number::pairs() infinite loop when $by is zero or negative by @Amirhf1 in https://github.com/laravel/framework/pull/60324
- [12.x] Ensure path seperators aren't encoded in LocalFilesystemAdapter by @jackbayliss in https://github.com/laravel/framework/pull/60350
- [12.x] Ensure
configis bound before trying to log deprecation notice by @crynobone in https://github.com/laravel/framework/pull/60376 - [12.x] Add JSON Schema array deserializer by @pushpak1300 in https://github.com/laravel/framework/pull/60387
- [13.x] Fix validation bypass in date_equals rule due to loose comparison by @gr8man in https://github.com/laravel/framework/pull/60393
- [13.x] Add Macroable to InvokedProcess by @yoeriboven in https://github.com/laravel/framework/pull/60392
- [13.x] Restrict allowed classes in routing unserialization by @gr8man in https://github.com/laravel/framework/pull/60391
- [13.x] Extract flexible cache created-key prefix into a named constant by @Amirhf1 in https://github.com/laravel/framework/pull/60390
- [13.x] Add missing type hints to WorkerIdle and listenForSignals to match sibling events by @Amirhf1 in https://github.com/laravel/framework/pull/60389
- [13.x] Allow enums in Queue::route by @jackbayliss in https://github.com/laravel/framework/pull/60402
- [13.x] Ensure unchanged compiled Blade views are not left expired by @dansan92 in https://github.com/laravel/framework/pull/60401
- [12.x] Skip pg_collation lookup in compileColumns() on PostgreSQL servers before 9.1 by @fissible in https://github.com/laravel/framework/pull/60400
- [13.x] Add units to queue attributes by @jackbayliss in https://github.com/laravel/framework/pull/60431
- [13.x] Add Prohibitable to
cache:clearandqueue:flushby @jackbayliss in https://github.com/laravel/framework/pull/60430 - [13.x] Refactor: use
Repository::FLEXIBLE_CREATED_KEY_PREFIXin test by @alipowerful7 in https://github.com/laravel/framework/pull/60424 - [13.x] Refactor: add
\JsonExceptionby @alipowerful7 in https://github.com/laravel/framework/pull/60423 - [13.x] Add generics to DatabaseTransactionsManager transaction getters by @dfinchenko in https://github.com/laravel/framework/pull/60420
- [13.x] Fix: add
@throws \ReflectionExceptionby @alipowerful7 in https://github.com/laravel/framework/pull/60436 - [13.x] Fix: add
|nullin doc blocks by @alipowerful7 in https://github.com/laravel/framework/pull/60435 - Merge branch 12.x by @crynobone in https://github.com/laravel/framework/pull/60441
- [13.x] fix model:prune Command options validation typo by @clemblanco in https://github.com/laravel/framework/pull/60444
- [13.x] Add typed translation accessors by @dansan92 in https://github.com/laravel/framework/pull/60443
- [13.x] Fix HandleExceptions fatal when static::$app is null during Octane request marshaling by @majidfeiz in https://github.com/laravel/framework/pull/60439
- [13.x] Adjust PruneCommandTest by @jackbayliss in https://github.com/laravel/framework/pull/60445
- [13.x] Add generic to QueueRoutes::all() return type by @dfinchenko in https://github.com/laravel/framework/pull/60447
- [13.x] Pass reflection parameter to contextual attribute resolve method by @SanderSander in https://github.com/laravel/framework/pull/60457
- Add multi-type union support to Illuminate JsonSchema by @pushpak1300 in https://github.com/laravel/framework/pull/60455
- [13.x] Cache
rememberWithState()by @cosmastech in https://github.com/laravel/framework/pull/60385