릴리스 정보

번역일: 2026년 6월 25일

릴리스 정보

버전 관리 체계

Laravel과 공식 1st-party 패키지들은 시맨틱 버전 관리(Semantic Versioning)를 따릅니다. 메이저 버전은 매년(대략 1분기) 출시되며, 마이너 및 패치 버전은 매주 출시될 수도 있습니다. 마이너·패치 버전에는 절대로 하위 호환성을 깨는 변경 사항이 포함되지 않습니다.

애플리케이션이나 패키지에서 Laravel 프레임워크를 참조할 때는 ^11.0과 같은 방식으로 버전 제약을 지정하세요. 메이저 버전 업그레이드에는 하위 호환성을 깨는 변경이 포함될 수 있습니다. 다만, Laravel은 항상 하루 이내에 새 메이저 버전으로 업그레이드할 수 있도록 노력하고 있습니다.

명명된 인수 (Named Arguments)

PHP의 명명된 인수(named arguments)는 Laravel의 하위 호환성 보장 범위에 포함되지 않습니다. 코드베이스 개선을 위해 필요 시 함수 인수의 이름이 변경될 수 있으므로, Laravel 메서드를 호출할 때 명명된 인수를 사용하면 향후 파라미터 이름 변경으로 인해 코드가 깨질 수 있음을 유의하시기 바랍니다.

지원 정책

모든 Laravel 릴리스는 출시 후 18개월간 버그 수정, 2년간 보안 수정이 제공됩니다. Lumen을 포함한 추가 라이브러리는 최신 메이저 버전만 버그 수정을 받습니다. 또한 Laravel이 지원하는 데이터베이스 버전도 함께 확인하세요.

버전PHP (*)출시일버그 수정 지원 종료보안 수정 지원 종료
98.0 - 8.22022년 2월 8일2023년 8월 8일2024년 2월 6일
108.1 - 8.32023년 2월 14일2024년 8월 6일2025년 2월 4일
118.2 - 8.42024년 3월 12일2025년 9월 3일2026년 3월 12일
128.2 - 8.42025년 2월 24일2026년 8월 13일2027년 2월 24일
지원 종료
보안 수정만 제공

(*) 지원되는 PHP 버전

Laravel 11

Laravel 11은 Laravel 10.x의 개선 사항을 이어받아 다음과 같은 새로운 기능과 개선 사항을 도입했습니다: 간소화된 애플리케이션 구조, 초(second) 단위 속도 제한, 헬스 라우팅, 암호화 키 무중단 교체, 큐 테스트 개선, Resend 메일 전송 드라이버, Prompt 유효성 검사 통합, 새로운 Artisan 명령어 등. 또한 공식 1st-party WebSocket 서버인 Laravel Reverb가 새롭게 출시되어 애플리케이션에 강력한 실시간 기능을 제공합니다.

PHP 8.2

Laravel 11.x는 PHP 8.2 이상을 요구합니다.

간소화된 애플리케이션 구조

간소화된 애플리케이션 구조는 Taylor OtwellNuno Maduro가 개발했습니다.

Laravel 11은 새로운 Laravel 애플리케이션을 위한 간소화된 디렉터리 구조를 도입했습니다. 기존 애플리케이션에는 변경이 필요하지 않으며, 새 구조는 Laravel 개발자에게 익숙한 개념을 유지하면서도 더 가볍고 현대적인 경험을 제공하는 것을 목표로 합니다.

애플리케이션 부트스트랩 파일

bootstrap/app.php 파일이 코드 기반 애플리케이션 설정 파일로 새롭게 자리잡았습니다. 이 파일 하나에서 라우팅, 미들웨어, 서비스 프로바이더, 예외 처리 등 애플리케이션의 핵심 동작을 한곳에서 설정할 수 있습니다. 기존에는 여러 파일에 흩어져 있던 고수준 설정들이 하나로 통합된 것입니다:

return Application::configure(basePath: dirname(__DIR__)) ->withRouting( web: __DIR__.'/../routes/web.php', commands: __DIR__.'/../routes/console.php', health: '/up', ) ->withMiddleware(function (Middleware $middleware) { // }) ->withExceptions(function (Exceptions $exceptions) { // })->create();

서비스 프로바이더

기존 Laravel 애플리케이션에는 기본 서비스 프로바이더가 5개 포함되어 있었지만, Laravel 11에서는 AppServiceProvider 하나만 포함됩니다. 나머지 서비스 프로바이더의 기능은 bootstrap/app.php로 통합되거나 프레임워크가 자동으로 처리합니다.

예를 들어, 이벤트 자동 탐지(Event Discovery)가 기본적으로 활성화되어 이벤트와 리스너를 수동으로 등록할 필요가 거의 없어졌습니다. 수동 등록이 필요한 경우에는 AppServiceProvider에 작성하면 됩니다. 마찬가지로, 기존에 AuthServiceProvider에 등록하던 라우트 모델 바인딩이나 인가 게이트도 AppServiceProvider에서 처리할 수 있습니다.

API 및 브로드캐스트 라우팅 선택적 설치

api.phpchannels.php 라우트 파일은 많은 애플리케이션에서 필요하지 않으므로 기본적으로 포함되지 않습니다. 필요할 때 아래 Artisan 명령어로 간단히 생성할 수 있습니다:

php artisan install:apiphp artisan install:broadcasting

미들웨어

기존에는 새 Laravel 애플리케이션에 9개의 미들웨어가 기본 포함되어 있었습니다(요청 인증, 입력값 트리밍, CSRF 토큰 검증 등). Laravel 11에서는 이 미들웨어들이 프레임워크 내부로 이동되어 애플리케이션 코드를 더 간결하게 유지할 수 있습니다. 동작을 커스터마이즈하려면 bootstrap/app.php에서 제공하는 새 메서드를 사용하면 됩니다:

->withMiddleware(function (Middleware $middleware) { $middleware->validateCsrfTokens( except: ['stripe/*'] ); $middleware->web(append: [ EnsureUserIsSubscribed::class, ]) })

모든 미들웨어를 bootstrap/app.php에서 손쉽게 커스터마이즈할 수 있게 되면서, 별도의 HTTP "커널(Kernel)" 클래스가 더 이상 필요하지 않습니다.

스케줄링

새로운 Schedule 파사드를 통해 스케줄 작업을 routes/console.php에 직접 정의할 수 있습니다. 별도의 콘솔 "커널" 클래스가 필요 없어졌습니다:

use Illuminate\Support\Facades\Schedule; Schedule::command('emails:send')->daily();

예외 처리

라우팅, 미들웨어와 마찬가지로 예외 처리도 이제 별도의 예외 핸들러 클래스 없이 bootstrap/app.php에서 바로 설정할 수 있습니다:

->withExceptions(function (Exceptions $exceptions) { $exceptions->dontReport(MissedFlightException::class); $exceptions->report(function (InvalidOrderException $e) { // ... }); })

기본 `Controller` 클래스

새 Laravel 애플리케이션의 기본 컨트롤러 클래스가 단순화되었습니다. Laravel 내부의 Controller 클래스를 더 이상 상속하지 않으며, AuthorizesRequestsValidatesRequests 트레이트도 제거되었습니다. 필요하다면 각 컨트롤러에 개별적으로 포함할 수 있습니다:

<?php namespace App\Http\Controllers; abstract class Controller { // }

애플리케이션 기본값

새 Laravel 애플리케이션은 기본적으로 SQLite를 데이터베이스로, database 드라이버를 세션·캐시·큐에 사용합니다. 별도 소프트웨어 설치나 추가 마이그레이션 없이 애플리케이션 개발을 바로 시작할 수 있습니다.

database 드라이버는 시간이 지나면서 많은 운영 환경에서도 충분히 사용할 수 있을 만큼 성숙해졌습니다. 로컬 개발 환경과 프로덕션 환경 모두에 적합한 통일된 기본값을 제공합니다.

Laravel Reverb

Laravel Reverb는 Joe Dixon이 개발했습니다.

Laravel Reverb는 빠르고 확장 가능한 실시간 WebSocket 통신을 Laravel 애플리케이션에 직접 제공하며, Laravel Echo 등 기존 이벤트 브로드캐스팅 도구와 자연스럽게 통합됩니다.

php artisan reverb:start

Redis의 Pub/Sub 기능을 활용한 수평 확장도 지원하여, 여러 대의 Reverb 서버에 WebSocket 트래픽을 분산시킬 수 있습니다.

자세한 내용은 Reverb 문서를 참고하세요.

초(Second) 단위 속도 제한

초 단위 속도 제한은 Tim MacDonald가 기여했습니다.

HTTP 요청과 큐 Job을 포함한 모든 속도 제한기에서 이제 "초 단위" 제한을 설정할 수 있습니다. 기존에는 "분 단위"까지만 지원되었습니다:

RateLimiter::for('invoices', function (Request $request) { return Limit::perSecond(1); });

자세한 내용은 속도 제한 문서를 참고하세요.

헬스 라우팅

헬스 라우팅은 Taylor Otwell이 기여했습니다.

Laravel 11 애플리케이션에는 health 라우팅 지시어가 포함되어, Kubernetes 같은 오케스트레이션 시스템이나 외부 헬스 모니터링 서비스가 호출할 수 있는 간단한 헬스 체크 엔드포인트를 정의할 수 있습니다. 기본 경로는 /up입니다:

->withRouting( web: __DIR__.'/../routes/web.php', commands: __DIR__.'/../routes/console.php', health: '/up', )

이 라우트로 HTTP 요청이 들어오면 Laravel은 DiagnosingHealth 이벤트를 발생시켜 애플리케이션에 특화된 추가 헬스 체크를 수행할 수 있습니다.

암호화 키 무중단 교체

암호화 키 무중단 교체는 Taylor Otwell이 기여했습니다.

Laravel은 세션 쿠키를 포함한 모든 쿠키를 암호화하기 때문에, 암호화 키(APP_KEY)를 교체하면 모든 사용자가 로그아웃되고 기존 키로 암호화된 데이터를 복호화할 수 없게 됩니다.

Laravel 11에서는 APP_PREVIOUS_KEYS 환경 변수에 이전 암호화 키를 쉼표로 구분하여 지정할 수 있습니다. 암호화 시에는 항상 APP_KEY의 현재 키를 사용하고, 복호화 시에는 현재 키로 먼저 시도한 뒤 실패하면 이전 키들을 차례로 시도합니다.

이 방식 덕분에 암호화 키를 교체하더라도 사용자는 서비스 중단 없이 계속 이용할 수 있습니다.

자세한 내용은 암호화 문서를 참고하세요.

비밀번호 자동 재해시

비밀번호 자동 재해시는 Stephen Rees-Carter가 기여했습니다.

Laravel의 기본 비밀번호 해시 알고리즘은 bcrypt입니다. bcrypt의 "워크 팩터(work factor)"는 config/hashing.php 설정 파일이나 BCRYPT_ROUNDS 환경 변수로 조정할 수 있습니다.

CPU/GPU 성능이 향상됨에 따라 시간이 지나면 워크 팩터를 높이는 것이 권장됩니다. Laravel 11부터는 워크 팩터를 높이면, 사용자가 로그인할 때 자동으로 비밀번호를 새 워크 팩터로 재해시합니다. 별도의 추가 작업 없이 보안 수준을 점진적으로 높일 수 있습니다.

Prompt 유효성 검사

Prompt 유효성 검사 통합은 Andrea Marco Sartori가 기여했습니다.

Laravel Prompts는 CLI 애플리케이션에 플레이스홀더 텍스트, 유효성 검사 등 브라우저와 유사한 기능을 제공하는 PHP 패키지입니다.

기존에는 클로저를 사용한 유효성 검사만 지원했습니다:

$name = text( label: 'What is your name?', validate: fn (string $value) => match (true) { strlen($value) < 3 => 'The name must be at least 3 characters.', strlen($value) > 255 => 'The name must not exceed 255 characters.', default => null } );

입력 항목이 많거나 복잡한 유효성 검사가 필요한 경우 클로저 방식은 번거로울 수 있습니다. Laravel 11부터는 Laravel의 유효성 검사기(Validator)를 그대로 활용할 수 있습니다:

$name = text('What is your name?', validate: [ 'name' => 'required|min:3|max:255', ]);

큐 인터랙션 테스트

큐 인터랙션 테스트는 Taylor Otwell이 기여했습니다.

기존에는 큐에 등록된 Job이 릴리즈(release)되었는지, 삭제(delete)되었는지, 수동으로 실패(fail) 처리되었는지 테스트하려면 커스텀 큐 페이크(fake)와 스텁을 직접 만들어야 했습니다. Laravel 11부터는 withFakeQueueInteractions 메서드를 사용해 간단하게 테스트할 수 있습니다:

use App\Jobs\ProcessPodcast; $job = (new ProcessPodcast)->withFakeQueueInteractions(); $job->handle(); $job->assertReleased(delay: 30);

자세한 내용은 큐 문서를 참고하세요.

새로운 Artisan 명령어

클래스 생성 Artisan 명령어는 Taylor Otwell이 기여했습니다.

클래스, Enum, 인터페이스, 트레이트를 빠르게 생성할 수 있는 새로운 Artisan 명령어가 추가되었습니다:

php artisan make:classphp artisan make:enumphp artisan make:interfacephp artisan make:trait

모델 캐스트 개선

모델 캐스트 개선은 Nuno Maduro가 기여했습니다.

Laravel 11부터는 모델의 캐스트를 프로퍼티 대신 메서드로 정의할 수 있습니다. 인수가 필요한 캐스트를 사용할 때 특히 더 간결하고 유창한 표현이 가능합니다:

/** * 캐스트할 속성을 반환합니다. * * @return array<string, string> */ protected function casts(): array { return [ 'options' => AsCollection::using(OptionCollection::class), // AsEncryptedCollection::using(OptionCollection::class), // AsEnumArrayObject::using(OptionEnum::class), // AsEnumCollection::using(OptionEnum::class), ]; }

속성 캐스팅에 대한 자세한 내용은 Eloquent 문서를 참고하세요.

`once` 함수

once 헬퍼는 Taylor OtwellNuno Maduro가 기여했습니다.

once 헬퍼 함수는 전달된 콜백을 실행하고 그 결과를 요청(request) 생명주기 동안 메모리에 캐시합니다. 동일한 콜백으로 이후에 다시 호출하면 캐시된 결과를 반환합니다:

function random(): int { return once(function () { return random_int(1, 1000); }); } random(); // 123 random(); // 123 (캐시된 결과) random(); // 123 (캐시된 결과)

자세한 내용은 헬퍼 문서를 참고하세요.

인메모리 데이터베이스 테스트 성능 개선

인메모리 데이터베이스 테스트 성능 개선은 Anders Jenbo가 기여했습니다.

Laravel 11은 테스트 시 :memory: SQLite 데이터베이스를 사용할 때 눈에 띄는 속도 향상을 제공합니다. PHP의 PDO 객체 참조를 유지하고 커넥션 간에 재사용함으로써, 전체 테스트 실행 시간을 최대 절반으로 단축합니다.

MariaDB 지원 개선

MariaDB 지원 개선은 Jonas StaudenmeirJulius Kiekbusch가 기여했습니다.

Laravel 11에는 전용 MariaDB 드라이버가 추가되어 더 나은 기본값을 제공합니다. 이전 버전에서는 MariaDB를 사용할 때 MySQL 드라이버를 그대로 사용해야 했습니다.

자세한 내용은 데이터베이스 문서를 참고하세요.

데이터베이스 검사 및 스키마 작업 개선

스키마 작업 및 데이터베이스 검사 개선은 Hafez Divandari가 기여했습니다.

Laravel 11은 컬럼 수정·이름 변경·삭제를 네이티브로 지원하는 등 데이터베이스 스키마 작업 및 검사 메서드가 크게 확장되었습니다. 고급 공간 타입(spatial type), 기본값 외의 스키마 이름 지정, 테이블·뷰·컬럼·인덱스·외래 키를 다루는 네이티브 스키마 메서드도 제공됩니다:

use Illuminate\Support\Facades\Schema; $tables = Schema::getTables(); $views = Schema::getViews(); $columns = Schema::getColumns('users'); $indexes = Schema::getIndexes('users'); $foreignKeys = Schema::getForeignKeys('users');

이 문서는 Laravel 공식 문서(MIT)를 한국 개발자를 위해 번역·재구성한 것입니다.

번역일: 2026년 6월 25일