Unterstützte PHP-Versionen: 7.4 bis 8.5
Unterstützt: PHP 8.0 bis 8.5. Ohne Support nutzbar: PHP 7.4 (Exponential 6.0.15 und neuer). Warum Exponential PHP 7.4 unterstützt
Diese Seite richtet sich an PHP-Entwickler, die wissen müssen, unter welchen PHP-Versionen ihr Code laufen muss. Exponential 6 läuft unter PHP 8.0 bis 8.5 (PHP 7.4 ohne Support nutzbar). Die älteste Version bestimmt, welche Syntax und welche Funktionen Sie verwenden dürfen; die neueste bestimmt, welche Deprecations Sie vermeiden müssen.
Inhalt
- Der Bereich
- PHP 8.0 unterstützt, PHP 7.4 ohne Support nutzbar
- Wie jede Version getestet wird
- Was unter PHP 8.0 anders ist
- Die Geschichte der Anforderung
- Was Sie in Ihrer Erweiterung angeben
Der Bereich
composer.json gibt an:
"php": "^7.4 || ^8.0 || ^8.1 || ^8.2 || ^8.3 || ^8.4 || ^8.5 || ^8.6 || ^8.7 || ^8.8"Die Bereiche für 8.6 bis 8.8 sind vorausschauend; diese Versionen gibt es noch nicht, und sie werden nicht getestet
(PHP-, PHP-FIG- und Composer-Standards). Die benötigten
PHP-Erweiterungen sind dom, libxml, mbstring, pcre, json, iconv, reflection, session, spl und
simplexml; Datenbank- und Bilderweiterungen stehen unter suggest.
Exponential Velocity, der Anwendungsserver, läuft ab seinem Release 0.0.4.54 unter PHP 8.0 bis 8.5
(Velocity ist Teil von Exponential 6.0.15). Der Kernel verlangt ihn
zusammen mit den anderen Paketen, die PHP 8 brauchen, über das Metapaket se7enxweb/exponential-php-floor, dessen
Version für PHP 7.4 sie auslässt (Warum Exponential PHP 7.4 unterstützt).
PHP 8.0 unterstützt, PHP 7.4 ohne Support nutzbar
PHP 7.4 wird ab 6.0.15 für Organisationen unterstützt, die das PHP ihrer Server noch nicht ändern können: Hosting-Verträge, zertifizierte Images, Betriebssystem-Releases mit langer Laufzeit. PHP 8.0 ist wichtig, weil es das Standard-PHP von Red Hat Enterprise Linux 9, AlmaLinux 9 und Rocky Linux 9 ist, sodass eine Site auf diesen Systemen keine PHP-Pakete von Drittanbietern braucht. Die Gründe und die Kompromisse stehen in Warum Exponential PHP 7.4 unterstützt.
Der Preis für Entwickler ist eine Regel: keine Syntax und keine ungeschützten Funktionen im Kernel, die neuer als 7.4
sind. Das heißt: keine Union Types, kein Nullsafe-Operator, kein match, keine benannten Argumente, keine Constructor
Promotion, kein mixed, keine Rückgabetypen static, keine Enums und kein readonly; typisierte Eigenschaften und
Arrow Functions sind erlaubt. Funktionen aus PHP 8.0 und 8.1 wie str_contains() dürfen verwendet werden, weil
symfony/polyfill-php80 und symfony/polyfill-php81 sie unter 7.4 definieren
(Code schreiben, der unter PHP 8.0 läuft nennt den Rest). make lint74 prüft die
geänderten Dateien, make lint74-all jede Datei.
Wie jede Version getestet wird
| Prüfung | PHP | Wo |
|---|---|---|
Syntax jeder PHP-Datei, produktives composer install --no-dev, Boot-Smoke-Test (tests/bin/bootsmoke.php) | 7.4 | quality.yml, Job php74 |
Syntax jeder PHP-Datei, produktives composer install --no-dev, Boot-Smoke-Test (tests/bin/bootsmoke.php) | 8.0 | quality.yml, Job php80 |
PHPCompatibility mit testVersion 8.0- | statisch | phpcs.xml.dist (eine Warnung in der CI) |
| PHP-Syntax geänderter Dateien | 8.3 | quality.yml |
| PHPUnit ohne Datenbank | 8.1, 8.2, 8.3, 8.4, 8.5 | phpunit.yml, mit PHPUnit 10.5 unter 8.1, 11.5 unter 8.2 und 8.3, 13 unter 8.4 und 8.5 |
| PHPUnit mit MySQL 8.0 und PostgreSQL 15 | 8.3 | phpunit.yml, Datenbanktests |
PHPStan (Analyse als phpVersion: 80100) | 8.3 | quality.yml |
| Mikro-Benchmark | 8.5 | performance.yml |
PHPUnit läuft nicht unter PHP 8.0, weil PHPUnit 10 und neuer 8.1 brauchen. Unter 8.0 ist der Code nur durch Syntax, Installation und Boot abgedeckt, weshalb die Regeln für 8.0 im Review so wichtig sind (CI und das Nachstellen einer roten Prüfung).
Was unter PHP 8.0 anders ist
Der Kernel verhält sich unter jeder Version gleich; einige Funktionen brauchen ein neueres PHP und greifen still auf einen Ersatz zurück:
| Funktion | Unter PHP 8.0 |
|---|---|
array_is_list() | definiert in lib/phpcompat.php |
fputcsv() mit $eol | ohne $eol geschrieben, Zeilenenden werden danach ersetzt |
fsync() | hinter function_exists(); die Daten werden mit fflush() geschrieben |
memory_reset_peak_usage() | hinter function_exists() |
str_increment(), str_decrement() (8.3) | die String-Operatoren geben ihre Eingabe zurück |
hash( 'xxh128' ) | der SQL-Abfrage-Cache verwendet md5 |
| AVIF-Bildausgabe unter Velocity | braucht 8.1; die Aushandlung endet bei WebP |
Die vollständige Tabelle mit den Dateien finden Sie unter Unterstützung für PHP 8.0.
Die Geschichte der Anforderung
| Release | Anforderung |
|---|---|
| bis 6.0.7 | PHP 7.4 und 8.1 |
| 6.0.8 (April 2025) | Composer verlangt PHP 8.1 oder neuer; erste Unterstützung für 8.4 |
| 6.0.11 (Dezember 2025) | Unterstützung für PHP 8.5 |
| 6.0.15 | PHP 8.0 wieder unterstützt, in der CI geprüft; dann PHP 7.4 wieder nutzbar, ohne Support, mit dem Metapaket se7enxweb/exponential-php-floor und einem CI-Job php74 |
Jeder Schritt ist unter Unterstützung für PHP 8 aufgeführt.
Was Sie in Ihrer Erweiterung angeben
- Geben Sie in der
composer.jsonIhrer Erweiterung"php": "^7.4 || ^8.0"(oder eine Liste wie die des Kernels) an, sofern Ihre Erweiterung nicht wirklich mehr braucht;"php": "^8.0"ist die nächste Wahl. Ein höheres Minimum blockiert die Installation mit dem Standard-PHP von RHEL 9, und die CI-Jobsphp74undphp80des Kernels schlagen fehl, wenn ein Paket, das der Kernel direkt verlangt, sein Minimum über ihres anhebt. Ein Paket, das PHP 8 brauchen muss, gehört in die passenden Versionen vonse7enxweb/exponential-php-floor, nicht in dasrequiredes Kernels. - Wenn Sie eine neuere PHP-Funktion brauchen, sichern Sie sie so ab wie der Kernel, statt das Minimum anzuheben.
- Testen Sie unter der ältesten und der neuesten Version, die Sie angeben.
Verwandte Seiten
- Code schreiben, der unter PHP 8.0 läuft
- Hinweise zur PHP-8-Migration für Ihren Code
- composer.json modernisieren
- Freie Dokumentation: diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.