Laravel upgrades

PHP 8.1 end of life and Laravel

PHP 8.1 stopped receiving security fixes on 31 December 2025. If your Laravel application runs on it, you can move PHP first, without changing the framework, and split one risky change into two smaller ones.

By itmarkerz Technologies. Updated 30 October 2026.

Where each PHP version stands

PHP security support end dates
PHPSecurity support endsLaravel versions that accept it
8.1Ended 31 December 202510
8.231 December 202610, 11, 12
8.331 December 202710, 11, 12, 13
8.431 December 202811, 12, 13
8.531 December 202912, 13

PHP dates are from php.net’s supported versions page and the end-of-life list. The Laravel column is from the Laravel release notes, and our versions page has the framework dates.

Two end-of-life problems, one server

If your application is on PHP 8.1 and Laravel 10, whose own security fixes ended on February 4, 2025, you have two separate gaps: the language and the framework. PHP 8.3 is the useful overlap, because Laravel 10 accepts it and so does Laravel 13.

That gives you a two-stage plan. Move to PHP 8.3 on Laravel 10 and release it. Once that has settled, upgrade the framework. If something breaks at either stage, you know which change caused it.

Your hosting may complicate the picture. Some Linux distributions backport security fixes to the PHP packages they ship, so check your vendor’s notice before assuming you are exposed. Backports don’t help with Composer packages, though, as those drop old PHP versions on their own schedule.

What breaks moving from PHP 8.1

The changes below are mostly deprecations, so they appear as log noise first. Clearing them while you are in the code saves a harder fix at the next major PHP release.

  • Dynamic properties (8.2). Setting an undeclared property on a class is deprecated unless the class uses #[\AllowDynamicProperties]. Older models, services and vendor code often do this.
  • String interpolation (8.2). The "${var}" style is deprecated in favour of "{$var}".
  • Encoding helpers (8.2). utf8_encode() and utf8_decode() are deprecated, which matters for old CSV imports and integrations.
  • Implicitly nullable parameters (8.4). function foo(T $a = null) should become function foo(?T $a = null). A sweep now saves returning to it if you later go to 8.4.

Details are in php.net’s PHP 8.2 and PHP 8.4 deprecation lists.

A short plan for the PHP move

  1. Check that your host or server image offers PHP 8.3, including for CLI, cron and queue workers.
  2. Run your test suite on 8.3 with deprecations visible. Then run composer update with PHP 8.3 as the platform, to see which packages object.
  3. Check PHP extensions on the new version. A missing one fails at runtime, sometimes only on one rarely used path.
  4. Release to staging, run the flows that make you money, then release to production with the old version still installed.

PHP can also be part of a wider project. We moved a cabinet manufacturer’s system from PHP 5.6 all the way to 8.5 as part of its Laravel 13 upgrade. See what that kind of work involves on our upgrade service page.

PHP work we have delivered

See all our work

Questions

When did PHP 8.1 reach end of life?

31 December 2025, according to php.net's list of unsupported branches.

Which Laravel versions still accept PHP 8.1?

Of the versions we track, only Laravel 10, which supports PHP 8.1–8.3. Laravel 11 and later need PHP 8.2 or above.

Should I move to PHP 8.2 or 8.3?

PHP 8.3 at least. PHP 8.2's security support ends on 31 December 2026, and Laravel 13 needs 8.3 or later, so stopping at 8.2 means repeating the work almost immediately.

Running Laravel on PHP 8.1?

Tell us your Laravel version and where it is hosted. We will tell you whether PHP can move on its own, and what the full upgrade would cost.

We reply within one business day (IST).