Skip to content

feat: definitions for the framework versions that still run on PHP 7.4 - #30

Merged
geodro merged 1 commit into
mainfrom
feat/legacy-php-framework-versions
Jul 28, 2026
Merged

feat: definitions for the framework versions that still run on PHP 7.4#30
geodro merged 1 commit into
mainfrom
feat/legacy-php-framework-versions

Conversation

@geodro

@geodro geodro commented Jul 28, 2026

Copy link
Copy Markdown
Member

Closes #29

Thirteen definitions, covering every version back to the oldest that still runs on PHP 7.4: Laravel 6 through 9, Symfony 4 through 6, Drupal 8 and 9, Statamic 3 and 4, CakePHP 3, CodeIgniter 3.

Each is the nearest existing definition with its version and PHP range corrected. That holds for Laravel 6 through 9 because they share what matters: the CACHE_DRIVER key rather than CACHE_STORE, schedule:run rather than schedule:work, and no Reverb.

CodeIgniter 3 is written rather than copied. Version 4 is built around spark, which 3 does not ship, so a copy would have declared a console, a queue worker and setup commands that cannot run. It declares detection, the PHP range and where the logs are, and claims nothing else.

The ranges, which are the part worth checking:

Framework Version PHP
laravel 6, 7 7.2 to 8.0
laravel 8 7.3 to 8.1
laravel 9 8.0 to 8.2
symfony 4 7.1 to 8.0
symfony 5 7.2 to 8.2
symfony 6 8.0 to 8.3
drupal 8 7.2 to 7.4
drupal 9 7.3 to 8.1
statamic 3 7.4 to 8.1
statamic 4 8.0 to 8.2
cakephp 3 7.2 to 7.4
codeigniter 3 7.2 to 7.4

WordPress is untouched, since both its majors already declare 7.4 as the floor. Magento is left alone deliberately: 2.4.0 through 2.4.3 ran on 7.4 while the current 2 definition starts at 8.1, and separating those changes how that framework's version is detected rather than adding a file. Worth its own change.

This pairs with lerd-env/lerd#1204, which stops a borrowed definition's range being applied to a project it does not describe. That fix means an unrecognised version falls back to the project's own composer requirement, and these definitions mean fewer projects need the fallback at all.

Definitions only covered the recent majors, so a project on an older release had
none of its own and borrowed the nearest. A borrowed definition describes a
different release, and lerd has to treat its PHP range as not applying, which
leaves those projects with no declared range, no workers and no doctor checks
of their own.

Added every version back to the oldest that still runs on PHP 7.4: Laravel 6
through 9, Symfony 4 through 6, Drupal 8 and 9, Statamic 3 and 4, CakePHP 3 and
CodeIgniter 3. Each is the nearest existing definition with its version and PHP
range corrected, which holds for Laravel 6 through 9 because they share the
CACHE_DRIVER key, the schedule:run command and the absence of Reverb.

CodeIgniter 3 is written rather than copied. Version 4 is built around spark,
which 3 does not ship, so a copy would have declared a console, a queue worker
and setup commands that cannot run. It declares detection, the PHP range and
where the logs are, and claims nothing else.

WordPress is unchanged, since both its majors already declare 7.4 as the floor.
Magento is left alone: 2.4.0 through 2.4.3 ran on 7.4 while the current 2
definition starts at 8.1, and separating them changes how that framework's
version is detected rather than adding a file.
@geodro
geodro requested a review from a team as a code owner July 28, 2026 08:55
@geodro
geodro merged commit f8b1483 into main Jul 28, 2026
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.

Add definitions for the framework versions that still run on PHP 7.4

1 participant