arborrow / montserrat

A retreat management application written in Laravel
12 stars 4 forks source link

Laravel 9.x Shift #489

Closed arborrow closed 2 years ago

arborrow commented 2 years ago

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

Before merging, you need to:

If you need help with your upgrade, check out the Human Shifts. You may also join the Shifty Coders Slack workspace to level-up your Laravel skills.

arborrow commented 2 years ago

:information_source: Laravel 9 moved the resources/lang folder to the top level of the project. While Shift moved and replaced references to this folder, you may have additional references to this folder which need to be updated.

arborrow commented 2 years ago

:x: In Laravel 9, unvalidated array keys are excluded from the validated data. While not recommended, you may add Validator::includeUnvalidatedArrayKeys() to the boot method of your AppServiceProvider to preserve the old behavior. However, ideally, you should specify the allowed keys in your array validation rule.

Shift found uses of the array validation rule where the keys are not specified in the following files. You should review these rules and specify the allowed array keys.

arborrow commented 2 years ago

:warning: Laravel 9 upgraded to Flysystem 3.0 causing the behavior of the Storage facade to change slightly:

For more details, you may review the Flysystem 3.x section of the Upgrade Guide.

arborrow commented 2 years ago

:warning: Laravel 9 transitioned from SwiftMailer to Symfony Mailer. While this transition should be relatively seamless and Shift automates any tedious changes, there are some changes which are not reliably 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

Updated Return Types The send, html, text, and plain methods no longer return the number of recipients that received the message.

Failed Recipients It is no longer possible to retrieve a list of failed recipients after sending a message. Instead, a Symfony\Component\Mailer\Exception\TransportExceptionInterface exception will be thrown if a message fails to send. Instead of relying on retrieving invalid email addresses after sending a message, it is recommend that you validate email addresses before sending the message instead.

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

arborrow commented 2 years ago

:x: Shift could not upgrade the following files since they differed from the default Laravel version. You will need to compare these files against the default Laravel 9 versions and merge any changes:

arborrow commented 2 years ago

:information_source: Laravel 8 removed the public/web.config file. The presence of this file creates a potential security risk for projects not using Microsoft IIS as their web server.

Shift detected this file was unmodified and removed it. If you are using Microsoft IIS as your web server, you may undo this commit by running git revert 1425b9ed.

arborrow commented 2 years ago

:warning: The FILESYSTEM_DRIVER environment variable was renamed in Laravel 9 to FILESYSTEM_DISK. Shift attempted to automate this change, but you should review any additional environment configuration and update to the new variable name.

arborrow commented 2 years ago

:warning: 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 96e659d7 and make the config file changes manually.

arborrow commented 2 years ago

:warning: 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.

arborrow commented 2 years ago

:information_source: 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 additional package incompatibilities.

arborrow commented 2 years ago

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

arborrow commented 2 years ago

:warning: The $loop variable is no longer available when iterating over a LazyCollection. Shift detected the $loop variable being used in the following Blade templates. You should review these instances to ensure they are not iterating over a LazyCollection or track your own loop variables.

arborrow commented 2 years ago

:information_source: The HTTP client has been updated to have a default timeout of 30 seconds. Previously there was no default. The underlying request would wait indefinitely. Now an exception is thrown after 30 seconds.

If you find your requests need longer, you may prefix your request to specify a timeout:

Http::timeout(60)->get("https://laravelshift.com");
arborrow commented 2 years ago

:tada: Congratulations, you're now running the latest version of Laravel!

Next, you may optionally run the following Shifts to ensure your application is fully upgraded, adopts the latest Laravel conventions, and easier to maintain in the future:

You may also use the Shift Workbench to automate common tasks for maintaining your Laravel and PHP applications.

arborrow commented 2 years ago

composer update Loading composer repositories with package information Updating dependencies Your requirements could not be resolved to an installable set of packages.

Problem 1

Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.

arborrow commented 2 years ago
arborrow commented 2 years ago

I ran a new shift after updating master to PHP 8.0 with updated composer.json. With the new branch (shift-55847), sail composer upgrade runs successfully. So now I can begin reviewing the comments on that branch and pull request to resolve accordingly.