Skip to content

Laravel 9.x Shift#32

Merged
marshall-davis merged 14 commits into
masterfrom
shift-157060
Aug 26, 2025
Merged

Laravel 9.x Shift#32
marshall-davis merged 14 commits into
masterfrom
shift-157060

Conversation

@marshall-davis
Copy link
Copy Markdown
Member

This pull request includes the changes for upgrading to Laravel 9.x. Feel free to commit any additional changes to the shift-157060 branch.

Before merging, you need to:

  • Checkout the shift-157060 branch
  • Review all pull request comments for additional changes
  • Run composer update (if the scripts fail, try with --no-scripts)
  • Clear any config, route, or view cache
  • Thoroughly test your application (no tests?, no CI?)

If you need help with your upgrade, check out the Human Shifts.

Shift automatically applies the Laravel coding style - which uses the PSR-12 coding style as a base with some minor additions.

You may customize the code style applied by configuring [Pint](https://laravel.com/docs/pint), [PHP CS Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer), or [PHP CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer) for your project root.

For more information on customizing the code style applied by Shift, [watch this short video](https://laravelshift.com/videos/shift-code-style).
In an effort to make upgrading the constantly changing config files easier, Shift defaulted them and merged your true customizations - where ENV variables may not be used.
`<env>` tags have a lower precedence than system environment variables making it easier to overwrite PHPUnit configuration values in additional environments, such a CI.

Review this blog post for more details on configuration precedence when testing Laravel: https://jasonmccreary.me/articles/laravel-testing-configuration-precedence/
@marshall-davis
Copy link
Copy Markdown
Member Author

ℹ️ Laravel 9 moved the resources/lang folder to the top level of the project. While Shift automated this change, you may have additional references to the previous folder which need to be updated.

@marshall-davis
Copy link
Copy Markdown
Member Author

⚠️ Laravel 9 transitioned from SwiftMailer to Symfony Mailer. While this transition should be relatively seamless and Shift automates any tedious changes, some changes may not reliably be automated.

Dependencies
Some mail providers may require an additional dependency. For example, if you are using Mailgun, then you will need to install the symfony/mailgun-mailer package:

composer require symfony/mailgun-mailer symfony/http-client

For more details on what has changed you may review the Symfony Mailer section of the Upgrade Guide.

@marshall-davis
Copy link
Copy Markdown
Member Author

⚠️ The FILESYSTEM_DRIVER environment variable was renamed to FILESYSTEM_DISK in Laravel 9. Shift did not find this variable referenced in your committed files, but you should review any additional environment configuration and rename this variable.

@marshall-davis
Copy link
Copy Markdown
Member Author

⚠️ Shift upgraded your configuration files by defaulting them and merging your true customizations. These include values which are not changeable through core ENV variables.

You should review this commit for additional customizations or opportunities to use new ENV variables. If you have a lot of customizations, you may undo this commit with git revert 95889388 and make the config file changes manually.

@marshall-davis
Copy link
Copy Markdown
Member Author

ℹ️ The FILESYSTEM_CLOUD environment variable was removed in a later release of Laravel 8. While you may still use the cloud disk, you are encouraged to configure your own disks.

@marshall-davis
Copy link
Copy Markdown
Member Author

⚠️ The token driver for API authentication is no longer available. This driver was not very robust and was removed from the documentation. Laravel now recommends using Sanctum.

If you were using the token driver, you may re-add it within your auth.php configuration file then migrate to Sanctum at your convenience.

@marshall-davis
Copy link
Copy Markdown
Member Author

ℹ️ Shift updated your dependencies for Laravel 9. While many of the popular packages are reviewed, you may have to update additional packages in order for your application to be compatible with Laravel 9. Watch dealing with dependencies for tips on handling any Composer issues.

@marshall-davis
Copy link
Copy Markdown
Member Author

ℹ️ Laravel 9 adopted anonymous migrations. Shift automated this change to align with modern Laravel conventions and avoid naming migrations.

@marshall-davis
Copy link
Copy Markdown
Member Author

ℹ️ All of the underlying Symfony components used by Laravel have been upgraded to Symfony 6. If you are directly interacting with any Symfony component, you should review the Symfony change log for additional changes.

@marshall-davis
Copy link
Copy Markdown
Member Author

ℹ️ The app/Models folder was reintroduced back in Laravel 8. This was an optional change. Laravel and the artisan commands will automatically detect if you are using the app/Models folder or not.

If you wish to modernize your application to use the app/Models folder, you may run the Namespace Models Shift for free.

@marshall-davis
Copy link
Copy Markdown
Member Author

ℹ️ Laravel 9 now uses Vite to build frontend assets. While you may continue to use Laravel Mix, it is no longer the default. If you wish to modernize your application to use Vite, you may run the Vite Converter for free.

@marshall-davis
Copy link
Copy Markdown
Member Author

⚠️ Laravel 9.x has reached end of life. It no longer receives bug fixes or security updates. Shift recommends continuing to upgrade to the latest version (Laravel 12.x).

@marshall-davis marshall-davis merged commit 8976287 into master Aug 26, 2025
@marshall-davis marshall-davis deleted the shift-157060 branch August 26, 2025 15:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants