Skip to content

업그레이드 가이드

영향이 큰 변경 사항

중간 수준 영향 변경 사항

영향이 적은 변경 사항

10.x에서 11.0으로 업그레이드

예상 업그레이드 시간: 15분

lightbulb

저희는 가능한 모든 주요 변경 사항을 문서화하려고 노력합니다. 이러한 주요 변경 사항 중 일부는 프레임워크의 잘 알려지지 않은 부분에 있으므로 이러한 변경 사항 중 일부만 실제로 애플리케이션에 영향을 줄 수 있습니다. 시간을 절약하고 싶으신가요? Laravel Shift를 사용하여 애플리케이션 업그레이드를 자동화하는 데 도움을 받을 수 있습니다.

의존성 업데이트

영향 가능성: 높음

PHP 8.2.0 필요

이제 Laravel은 PHP 8.2.0 이상을 필요로 합니다.

curl 7.34.0 필요

이제 Laravel의 HTTP 클라이언트는 curl 7.34.0 이상을 필요로 합니다.

Composer 의존성

애플리케이션의 composer.json 파일에서 다음 의존성을 업데이트해야 합니다.

  • laravel/framework^11.0으로
  • nunomaduro/collision^8.1으로
  • laravel/breeze^2.0으로 (설치된 경우)
  • laravel/cashier^15.0으로 (설치된 경우)
  • laravel/dusk^8.0으로 (설치된 경우)
  • laravel/jetstream^5.0으로 (설치된 경우)
  • laravel/octane^2.3으로 (설치된 경우)
  • laravel/passport^12.0으로 (설치된 경우)
  • laravel/sanctum^4.0으로 (설치된 경우)
  • laravel/scout^10.0으로 (설치된 경우)
  • laravel/spark-stripe^5.0으로 (설치된 경우)
  • laravel/telescope^5.0으로 (설치된 경우)
  • livewire/livewire^3.4으로 (설치된 경우)
  • inertiajs/inertia-laravel^1.0으로 (설치된 경우)

애플리케이션이 Laravel Cashier Stripe, Passport, Sanctum, Spark Stripe 또는 Telescope를 사용하는 경우 해당 마이그레이션을 애플리케이션에 게시해야 합니다. Cashier Stripe, Passport, Sanctum, Spark Stripe 및 Telescope는 더 이상 자체 마이그레이션 디렉토리에서 마이그레이션을 자동으로 로드하지 않습니다. 따라서 다음 명령을 실행하여 해당 마이그레이션을 애플리케이션에 게시해야 합니다.

php artisan vendor:publish --tag=cashier-migrations
php artisan vendor:publish --tag=passport-migrations
php artisan vendor:publish --tag=sanctum-migrations
php artisan vendor:publish --tag=spark-migrations
php artisan vendor:publish --tag=telescope-migrations

또한, 이러한 각 패키지에 대한 업그레이드 가이드를 검토하여 추가적인 주요 변경 사항을 인지하고 있는지 확인해야 합니다:

Laravel 설치 프로그램을 수동으로 설치한 경우, Composer를 통해 설치 프로그램을 업데이트해야 합니다:

composer global require laravel/installer:^5.6

마지막으로, 이전에 애플리케이션에 추가한 적이 있다면 doctrine/dbal Composer 의존성을 제거해도 됩니다. Laravel은 더 이상 이 패키지에 의존하지 않기 때문입니다.

애플리케이션 구조

Laravel 11은 기본 파일 수가 더 적은 새로운 기본 애플리케이션 구조를 도입했습니다. 즉, 새로운 Laravel 애플리케이션은 더 적은 서비스 제공자, 미들웨어 및 구성 파일을 포함합니다.

그러나 Laravel 11은 Laravel 10 애플리케이션 구조를 지원하도록 세심하게 조정되었으므로 Laravel 10 애플리케이션이 Laravel 11로 업그레이드할 때 애플리케이션 구조를 마이그레이션하려고 시도하는 것을 권장하지 않습니다.

인증

비밀번호 재해싱

영향 가능성: 낮음

Laravel 11은 비밀번호가 마지막으로 해시된 이후 해싱 알고리즘의 "작업 요소"가 업데이트된 경우 인증 중에 사용자 비밀번호를 자동으로 재해시합니다.

일반적으로 이것은 애플리케이션을 중단시키지 않아야 합니다. 그러나 User 모델의 "password" 필드 이름이 password가 아닌 다른 이름인 경우 모델의 authPasswordName 속성을 통해 필드 이름을 지정해야 합니다.

protected $authPasswordName = 'custom_password_field';

또는 애플리케이션의 config/hashing.php 구성 파일에 rehash_on_login 옵션을 추가하여 비밀번호 재해싱을 비활성화할 수 있습니다.

'rehash_on_login' => false,

UserProvider 계약

영향 가능성: 낮음

Illuminate\Contracts\Auth\UserProvider 계약에 새로운 rehashPasswordIfRequired 메서드가 추가되었습니다. 이 메서드는 애플리케이션의 해싱 알고리즘 작업 요소가 변경된 경우 사용자의 비밀번호를 다시 해시하여 스토리지에 저장하는 역할을 합니다.

애플리케이션 또는 패키지에서 이 인터페이스를 구현하는 클래스를 정의하는 경우 구현에 새로운 rehashPasswordIfRequired 메서드를 추가해야 합니다. 참조 구현은 Illuminate\Auth\EloquentUserProvider 클래스 내에서 찾을 수 있습니다.

public function rehashPasswordIfRequired(Authenticatable $user, array $credentials, bool $force = false);

Authenticatable 계약

영향 가능성: 낮음

Illuminate\Contracts\Auth\Authenticatable 계약에 새로운 getAuthPasswordName 메서드가 추가되었습니다. 이 메서드는 인증 가능한 엔티티의 비밀번호 컬럼 이름을 반환하는 역할을 합니다.

애플리케이션 또는 패키지에서 이 인터페이스를 구현하는 클래스를 정의하는 경우, 구현에 새로운 getAuthPasswordName 메서드를 추가해야 합니다.

public function getAuthPasswordName()
{
return 'password';
}

Laravel에 포함된 기본 User 모델은 Illuminate\Auth\Authenticatable 트레이트 내에 메서드가 포함되어 있기 때문에 이 메서드를 자동으로 받습니다.

AuthenticationException 클래스

영향 가능성: 매우 낮음

Illuminate\Auth\AuthenticationException 클래스의 redirectTo 메서드는 이제 첫 번째 인수로 Illuminate\Http\Request 인스턴스를 요구합니다. 이 예외를 수동으로 캐치하고 redirectTo 메서드를 호출하는 경우, 그에 따라 코드를 업데이트해야 합니다.

if ($e instanceof AuthenticationException) {
$path = $e->redirectTo($request);
}

등록 시 이메일 인증 알림

영향 가능성: 매우 낮음

애플리케이션의 EventServiceProvider에서 이미 등록하지 않은 경우, SendEmailVerificationNotification 리스너가 Registered 이벤트에 대해 자동으로 등록됩니다. 애플리케이션의 EventServiceProvider에서 이 리스너를 등록하지 않고 Laravel이 자동으로 등록하는 것을 원하지 않는 경우, 애플리케이션의 EventServiceProvider에 빈 configureEmailVerification 메서드를 정의해야 합니다.

protected function configureEmailVerification()
{
// ...
}

캐시

캐시 키 접두사

영향 가능성: 매우 낮음

이전에는 DynamoDB, Memcached 또는 Redis 캐시 저장소에 캐시 키 접두사가 정의된 경우, Laravel은 접두사에 :를 추가했습니다. Laravel 11에서는 캐시 키 접두사에 : 접미사가 붙지 않습니다. 이전 접두사 동작을 유지하고 싶다면 캐시 키 접두사에 수동으로 : 접미사를 추가할 수 있습니다.

컬렉션

Enumerable 계약

영향 가능성: 낮음

Illuminate\Support\Enumerable 계약의 dump 메서드가 가변 인자 ...$args를 허용하도록 업데이트되었습니다. 이 인터페이스를 구현하는 경우 구현을 다음과 같이 업데이트해야 합니다.

public function dump(...$args);

데이터베이스

SQLite 3.26.0+

영향 가능성: 높음

애플리케이션에서 SQLite 데이터베이스를 사용하는 경우, SQLite 3.26.0 이상이 필요합니다.

Eloquent 모델 casts 메서드

영향 가능성: 낮음

기본 Eloquent 모델 클래스는 이제 속성 캐스트 정의를 지원하기 위해 casts 메서드를 정의합니다. 애플리케이션 모델 중 하나가 casts 관계를 정의하는 경우, 기본 Eloquent 모델 클래스에 존재하는 casts 메서드와 충돌할 수 있습니다.

컬럼 수정

영향 가능성: 높음

컬럼을 수정할 때, 변경 후 컬럼 정의에 유지하려는 모든 수정자를 명시적으로 포함해야 합니다. 누락된 속성은 삭제됩니다. 예를 들어, unsigned, default, comment 속성을 유지하려면 이전 마이그레이션에서 해당 속성이 컬럼에 할당된 경우에도 컬럼을 변경할 때 각 수정자를 명시적으로 호출해야 합니다.

예를 들어, unsigned, default, comment 속성을 사용하여 votes 컬럼을 생성하는 마이그레이션이 있다고 가정해 보겠습니다.

Schema::create('users', function (Blueprint $table) {
$table->integer('votes')->unsigned()->default(1)->comment('The vote count');
});

나중에 컬럼을 nullable로 변경하는 마이그레이션을 작성합니다:

Schema::table('users', function (Blueprint $table) {
$table->integer('votes')->nullable()->change();
});

Laravel 10에서는 이 마이그레이션이 컬럼에 unsigned, default, comment 속성을 유지합니다. 그러나 Laravel 11에서는 마이그레이션에 이전에 컬럼에 정의된 모든 속성을 포함해야 합니다. 그렇지 않으면 삭제됩니다.

Schema::table('users', function (Blueprint $table) {
$table->integer('votes')
->unsigned()
->default(1)
->comment('The vote count')
->nullable()
->change();
});

change 메서드는 컬럼의 인덱스를 변경하지 않습니다. 따라서, 컬럼을 수정할 때 인덱스를 명시적으로 추가하거나 삭제하려면 인덱스 수정자를 사용할 수 있습니다.

// 인덱스 추가...
$table->bigIncrements('id')->primary()->change();
 
// 인덱스 삭제...
$table->char('postal_code', 10)->unique(false)->change();

애플리케이션의 기존 "change" 마이그레이션을 모두 업데이트하여 컬럼의 기존 속성을 유지하고 싶지 않다면, 간단히 마이그레이션을 스쿼시할 수 있습니다.

php artisan schema:dump

마이그레이션이 스쿼시되면, Laravel은 보류 중인 마이그레이션을 실행하기 전에 애플리케이션의 스키마 파일을 사용하여 데이터베이스를 "마이그레이션"합니다.

부동 소수점 타입

영향 가능성: 높음

doublefloat 마이그레이션 컬럼 타입이 모든 데이터베이스에서 일관성을 갖도록 재작성되었습니다.

double 컬럼 타입은 이제 총 자릿수와 소수점 이하 자릿수 없이 DOUBLE과 동일한 컬럼을 생성합니다. 이는 표준 SQL 구문입니다. 따라서 $total$places에 대한 인수를 제거할 수 있습니다.

$table->double('amount');

float 컬럼 타입은 이제 총 자릿수와 소수점 이하 자릿수 없이 FLOAT과 동일한 컬럼을 생성하지만, 선택적 $precision 사양을 사용하여 4바이트 단정밀도 컬럼 또는 8바이트 배정밀도 컬럼으로 스토리지 크기를 결정할 수 있습니다. 따라서, $total$places에 대한 인수를 제거하고 데이터베이스 문서에 따라 원하는 값으로 선택적 $precision을 지정할 수 있습니다.

$table->float('amount', precision: 53);

unsignedDecimal, unsignedDouble, 및 unsignedFloat 메서드는 MySQL에서 이러한 컬럼 유형에 대한 unsigned 수정자가 더 이상 사용되지 않으며 다른 데이터베이스 시스템에서 표준화된 적이 없으므로 제거되었습니다. 그러나 이러한 컬럼 유형에 대해 더 이상 사용되지 않는 unsigned 속성을 계속 사용하려면 컬럼 정의에 unsigned 메서드를 체인으로 연결할 수 있습니다.

$table->decimal('amount', total: 8, places: 2)->unsigned();
$table->double('amount')->unsigned();
$table->float('amount', precision: 53)->unsigned();

전용 MariaDB 드라이버

영향 가능성: 매우 낮음

MariaDB 데이터베이스에 연결할 때 항상 MySQL 드라이버를 사용하는 대신, Laravel 11에서는 MariaDB 전용 데이터베이스 드라이버를 추가합니다.

애플리케이션이 MariaDB 데이터베이스에 연결하는 경우, 향후 MariaDB 특정 기능을 활용하기 위해 연결 구성을 새로운 mariadb 드라이버로 업데이트할 수 있습니다.

'driver' => 'mariadb',
'url' => env('DB_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
// ...

현재 새로운 MariaDB 드라이버는 한 가지 예외를 제외하고 현재 MySQL 드라이버와 동일하게 동작합니다. uuid 스키마 빌더 메서드는 char(36) 컬럼 대신 네이티브 UUID 컬럼을 생성합니다.

기존 마이그레이션에서 uuid 스키마 빌더 메서드를 사용하고 새로운 mariadb 데이터베이스 드라이버를 사용하기로 선택한 경우, 변경 사항 또는 예기치 않은 동작을 방지하기 위해 마이그레이션에서 uuid 메서드 호출을 char로 업데이트해야 합니다.

Schema::table('users', function (Blueprint $table) {
$table->char('uuid', 36);
 
// ...
});

공간 유형

영향 가능성: 낮음

데이터베이스 마이그레이션의 공간 열 유형이 모든 데이터베이스에서 일관되도록 재작성되었습니다. 따라서 마이그레이션에서 point, lineString, polygon, geometryCollection, multiPoint, multiLineString, multiPolygonmultiPolygonZ 메서드를 제거하고 대신 geometry 또는 geography 메서드를 사용할 수 있습니다.

$table->geometry('shapes');
$table->geography('coordinates');

MySQL, MariaDB 및 PostgreSQL에서 열에 저장된 값의 유형 또는 공간 참조 시스템 식별자를 명시적으로 제한하려면 subtypesrid를 메서드에 전달할 수 있습니다.

$table->geometry('dimension', subtype: 'polygon', srid: 0);
$table->geography('latitude', subtype: 'point', srid: 4326);

PostgreSQL 문법의 isGeometryprojection 컬럼 수정자가 그에 따라 제거되었습니다.

Doctrine DBAL 제거

영향 가능성: 낮음

다음 Doctrine DBAL 관련 클래스 및 메소드 목록이 제거되었습니다. Laravel은 더 이상 이 패키지에 의존하지 않으며, 이전에는 사용자 정의 유형이 필요했던 다양한 컬럼 유형을 적절하게 생성하고 변경하는 데 사용자 정의 Doctrine 유형을 등록할 필요가 더 이상 없습니다.

  • Illuminate\Database\Schema\Builder::$alwaysUsesNativeSchemaOperationsIfPossible 클래스 속성
  • Illuminate\Database\Schema\Builder::useNativeSchemaOperationsIfPossible() 메소드
  • Illuminate\Database\Connection::usingNativeSchemaOperations() 메소드
  • Illuminate\Database\Connection::isDoctrineAvailable() 메소드
  • Illuminate\Database\Connection::getDoctrineConnection() 메소드
  • Illuminate\Database\Connection::getDoctrineSchemaManager() 메소드
  • Illuminate\Database\Connection::getDoctrineColumn() 메소드
  • Illuminate\Database\Connection::registerDoctrineType() 메소드
  • Illuminate\Database\DatabaseManager::registerDoctrineType() 메소드
  • Illuminate\Database\PDO 디렉토리
  • Illuminate\Database\DBAL\TimestampType 클래스
  • Illuminate\Database\Schema\Grammars\ChangeColumn 클래스
  • Illuminate\Database\Schema\Grammars\RenameColumn 클래스
  • Illuminate\Database\Schema\Grammars\Grammar::getDoctrineTableDiff() 메소드

또한, 애플리케이션의 database 구성 파일에서 dbal.types를 통해 사용자 정의 Doctrine 유형을 등록할 필요가 더 이상 없습니다.

이전에 Doctrine DBAL을 사용하여 데이터베이스 및 관련 테이블을 검사한 경우, 대신 Laravel의 새로운 기본 스키마 메서드(Schema::getTables(), Schema::getColumns(), Schema::getIndexes(), Schema::getForeignKeys() 등)를 사용할 수 있습니다.

더 이상 사용되지 않는 스키마 메서드

영향 가능성: 매우 낮음

더 이상 사용되지 않는 Doctrine 기반의 Schema::getAllTables(), Schema::getAllViews(), 및 Schema::getAllTypes() 메서드가 제거되었고, 새로운 Laravel 기본 Schema::getTables(), Schema::getViews(), 및 Schema::getTypes() 메서드가 대신 사용됩니다.

PostgreSQL 및 SQL Server를 사용할 때 새로운 스키마 메서드는 3 부분 참조(예: database.schema.table)를 허용하지 않습니다. 따라서 대신 데이터베이스를 선언하려면 connection()을 사용해야 합니다.

Schema::connection('database')->hasTable('schema.table');

스키마 빌더 getColumnType() 메서드

영향 가능성: 매우 낮음

Schema::getColumnType() 메서드는 이제 Doctrine DBAL의 해당 타입이 아닌, 주어진 컬럼의 실제 타입을 항상 반환합니다.

데이터베이스 연결 인터페이스

영향 가능성: 매우 낮음

Illuminate\Database\ConnectionInterface 인터페이스에 새로운 scalar 메서드가 추가되었습니다. 이 인터페이스의 자체 구현을 정의하고 있다면, 구현에 scalar 메서드를 추가해야 합니다:

public function scalar($query, $bindings = [], $useReadPdo = true);

날짜

Carbon 3

영향 가능성: 중간

라라벨 11은 Carbon 2와 Carbon 3을 모두 지원합니다. Carbon은 라라벨과 에코시스템 전체에서 광범위하게 사용되는 날짜 조작 라이브러리입니다. Carbon 3으로 업그레이드하는 경우, diffIn* 메서드가 이제 부동 소수점 숫자를 반환하고 시간 방향을 나타내기 위해 음수 값을 반환할 수 있다는 점을 알아야 합니다. 이는 Carbon 2에서 상당한 변경 사항입니다. 이러한 변경 사항 및 기타 변경 사항을 처리하는 방법에 대한 자세한 내용은 Carbon의 변경 로그문서를 검토하십시오.

메일

Mailer 계약

영향 가능성: 매우 낮음

Illuminate\Contracts\Mail\Mailer 계약에 새로운 sendNow 메서드가 추가되었습니다. 응용 프로그램 또는 패키지에서 이 계약을 수동으로 구현하는 경우, 구현에 새로운 sendNow 메서드를 추가해야 합니다:

public function sendNow($mailable, array $data = [], $callback = null);

패키지

애플리케이션에 서비스 제공자 게시

영향 가능성: 매우 낮음

애플리케이션의 app/Providers 디렉토리에 서비스 제공자를 수동으로 게시하고 서비스 제공자를 등록하기 위해 애플리케이션의 config/app.php 구성 파일을 수동으로 수정하는 Laravel 패키지를 작성한 경우, 새로운 ServiceProvider::addProviderToBootstrapFile 메서드를 사용하도록 패키지를 업데이트해야 합니다.

addProviderToBootstrapFile 메서드는 새 Laravel 11 애플리케이션에서 config/app.php 구성 파일 내에 providers 배열이 존재하지 않으므로 게시한 서비스 제공자를 애플리케이션의 bootstrap/providers.php 파일에 자동으로 추가합니다.

use Illuminate\Support\ServiceProvider;
 
ServiceProvider::addProviderToBootstrapFile(Provider::class);

BatchRepository 인터페이스

영향 가능성: 매우 낮음

Illuminate\Bus\BatchRepository 인터페이스에 새로운 rollBack 메서드가 추가되었습니다. 자체 패키지 또는 애플리케이션 내에서 이 인터페이스를 구현하는 경우, 구현에 이 메서드를 추가해야 합니다.

public function rollBack();

데이터베이스 트랜잭션의 동기 작업

영향 가능성: 매우 낮음

이전에는 동기 작업(sync 큐 드라이버를 사용하는 작업)은 큐 연결의 after_commit 구성 옵션이 true로 설정되었는지 또는 작업에서 afterCommit 메서드가 호출되었는지 여부에 관계없이 즉시 실행되었습니다.

Laravel 11에서는 동기 큐 작업이 큐 연결 또는 작업의 "after commit" 구성을 따릅니다.

속도 제한

초당 속도 제한

영향 가능성: 중간

Laravel 11은 분당 단위로 제한되는 대신 초당 속도 제한을 지원합니다. 이 변경과 관련된 다양한 잠재적 주요 변경 사항을 알아야 합니다.

GlobalLimit 클래스 생성자는 이제 분 대신 초를 허용합니다. 이 클래스는 문서화되지 않았으며 일반적으로 애플리케이션에서 사용되지 않습니다.

new GlobalLimit($attempts, 2 * 60);

Limit 클래스 생성자는 이제 분 대신 초를 허용합니다. 이 클래스의 모든 문서화된 사용은 Limit::perMinuteLimit::perSecond와 같은 정적 생성자로 제한됩니다. 그러나 이 클래스를 수동으로 인스턴스화하는 경우 애플리케이션을 업데이트하여 클래스의 생성자에 초를 제공해야 합니다.

new Limit($key, $attempts, 2 * 60);

Limit 클래스의 decayMinutes 속성은 decaySeconds로 이름이 변경되었으며 이제 분 대신 초를 포함합니다.

Illuminate\Queue\Middleware\ThrottlesExceptionsIlluminate\Queue\Middleware\ThrottlesExceptionsWithRedis 클래스 생성자는 이제 분 대신 초를 허용합니다.

new ThrottlesExceptions($attempts, 2 * 60);
new ThrottlesExceptionsWithRedis($attempts, 2 * 60);

Cashier Stripe

Cashier Stripe 업데이트

영향 가능성: 높음

Laravel 11은 더 이상 Cashier Stripe 14.x를 지원하지 않습니다. 따라서 애플리케이션의 Laravel Cashier Stripe 종속성을 composer.json 파일에서 ^15.0으로 업데이트해야 합니다.

Cashier Stripe 15.0은 더 이상 자체 마이그레이션 디렉토리에서 마이그레이션을 자동으로 로드하지 않습니다. 대신 다음 명령을 실행하여 Cashier Stripe의 마이그레이션을 애플리케이션에 게시해야 합니다.

php artisan vendor:publish --tag=cashier-migrations

추가적인 주요 변경 사항은 Cashier Stripe 업그레이드 가이드를 참조하세요.

Spark (Stripe)

Spark Stripe 업데이트

영향 가능성: 높음

Laravel 11은 더 이상 Laravel Spark Stripe 4.x를 지원하지 않습니다. 따라서 애플리케이션의 Laravel Spark Stripe 종속성을 composer.json 파일에서 ^5.0으로 업데이트해야 합니다.

Spark Stripe 5.0은 더 이상 자체 마이그레이션 디렉토리에서 마이그레이션을 자동으로 로드하지 않습니다. 대신 다음 명령을 실행하여 Spark Stripe의 마이그레이션을 애플리케이션에 게시해야 합니다.

php artisan vendor:publish --tag=spark-migrations

추가적인 주요 변경 사항은 Spark Stripe 업그레이드 가이드를 참조하세요.

Passport

Passport 업데이트

영향 가능성: 높음

Laravel 11은 더 이상 Laravel Passport 11.x를 지원하지 않습니다. 따라서 애플리케이션의 Laravel Passport 종속성을 composer.json 파일에서 ^12.0으로 업데이트해야 합니다.

Passport 12.0은 더 이상 자체 마이그레이션 디렉토리에서 마이그레이션을 자동으로 로드하지 않습니다. 대신 다음 명령을 실행하여 Passport의 마이그레이션을 애플리케이션에 게시해야 합니다.

php artisan vendor:publish --tag=passport-migrations

또한, password grant 타입은 기본적으로 비활성화되어 있습니다. 애플리케이션의 AppServiceProviderboot 메서드에서 enablePasswordGrant 메서드를 호출하여 활성화할 수 있습니다.

public function boot(): void
{
Passport::enablePasswordGrant();
}

Sanctum

Sanctum 업데이트

영향 가능성: 높음

Laravel 11은 더 이상 Laravel Sanctum 3.x를 지원하지 않습니다. 따라서 애플리케이션의 Laravel Sanctum 의존성을 composer.json 파일에서 ^4.0으로 업데이트해야 합니다.

Sanctum 4.0은 더 이상 자체 마이그레이션 디렉토리에서 마이그레이션을 자동으로 로드하지 않습니다. 대신, 다음 명령을 실행하여 Sanctum의 마이그레이션을 애플리케이션에 게시해야 합니다.

php artisan vendor:publish --tag=sanctum-migrations

그런 다음, 애플리케이션의 config/sanctum.php 구성 파일에서 authenticate_session, encrypt_cookiesvalidate_csrf_token 미들웨어에 대한 참조를 다음과 같이 업데이트해야 합니다.

'middleware' => [
'authenticate_session' => Laravel\Sanctum\Http\Middleware\AuthenticateSession::class,
'encrypt_cookies' => Illuminate\Cookie\Middleware\EncryptCookies::class,
'validate_csrf_token' => Illuminate\Foundation\Http\Middleware\ValidateCsrfToken::class,
],

Telescope

Telescope 업데이트

영향 가능성: 높음

Laravel 11은 더 이상 Laravel Telescope 4.x를 지원하지 않습니다. 따라서 애플리케이션의 Laravel Telescope 의존성을 composer.json 파일에서 ^5.0으로 업데이트해야 합니다.

Telescope 5.0은 더 이상 자체 마이그레이션 디렉토리에서 마이그레이션을 자동으로 로드하지 않습니다. 대신, 다음 명령을 실행하여 Telescope의 마이그레이션을 애플리케이션에 게시해야 합니다.

php artisan vendor:publish --tag=telescope-migrations

Spatie Once 패키지

영향 가능성: 중간

Laravel 11은 이제 주어진 클로저가 한 번만 실행되도록 보장하는 자체 once 함수를 제공합니다. 따라서 애플리케이션이 spatie/once 패키지에 종속되어 있는 경우, 충돌을 피하기 위해 애플리케이션의 composer.json 파일에서 해당 패키지를 제거해야 합니다.

기타

또한 laravel/laravel GitHub 저장소에서 변경 사항을 확인하는 것이 좋습니다. 이러한 변경 사항 중 많은 부분이 필수는 아니지만, 애플리케이션과 동기화된 상태를 유지하는 것이 좋을 수 있습니다. 이러한 변경 사항 중 일부는 이 업그레이드 가이드에서 다루겠지만, 구성 파일 또는 주석의 변경과 같은 다른 변경 사항은 다루지 않을 것입니다. GitHub 비교 도구를 사용하여 변경 사항을 쉽게 확인하고 어떤 업데이트가 중요한지 선택할 수 있습니다.