Unterschiede zwischen PHP 5.5 und PHP 7/8

PHP 5 hat am 30. Januar 2024 das Ende des Supports erreicht. Ihre vorhandenen PHP 5-Anwendungen werden weiterhin ausgeführt und erhalten Traffic. App Engine kann jedoch die erneute Bereitstellung von Anwendungen blockieren, die Laufzeiten nach dem Enddatum des Supports verwenden. Wir empfehlen Ihnen, mithilfe der Richtlinien auf dieser Seite zur neuesten unterstützten Version von PHP zu migrieren.

Auf dieser Seite wird beschrieben, wie Sie Ihre PHP 5.5-Anwendung in die PHP 7/8-Laufzeit in der App Engine-Standardumgebung migrieren.

Kompatibilitätsprobleme zwischen PHP 5.5 und PHP 7/8

Die offizielle PHP-Dokumentation enthält Informationen zur Migration von verschiedenen PHP-Versionen:

Wichtige Unterschiede zwischen PHP 5.5 und PHP 7/8

Im Folgenden finden Sie eine Zusammenfassung der Unterschiede zwischen den Laufzeiten PHP 5.5 und PHP 7/8 in der App Engine-Standardumgebung:

Unterschiede bei der Arbeitsspeichernutzung

Laufzeiten der zweiten Generation haben eine höhere Referenz für die Arbeitsspeichernutzung im Vergleich zu Laufzeiten der ersten Generation. Dies ist auf mehrere Faktoren zurückzuführen, z. B. unterschiedliche Basis-Image-Versionen und Unterschiede bei der Berechnung der Arbeitsspeichernutzung durch die beiden Generationen.

Laufzeiten der zweiten Generation berechnen die Arbeitsspeichernutzung der Instanz als Summe von dem, was von einem Anwendungsprozess verwendet wird, und der Anzahl der Anwendungsdateien, die dynamisch im Arbeitsspeicher zwischengespeichert werden. Führen Sie ein Upgrade auf eine größere Instanzklasse mit mehr Arbeitsspeicher durch, um zu vermeiden, dass es bei arbeitsspeicherintensiven Anwendungen aufgrund des Überschreitens von Arbeitsspeicherlimits zum Herunterfahren von Instanzen kommt.

Unterschiede bei der CPU-Auslastung

Laufzeiten der zweiten Generation können beim Kaltstart von Instanzen eine höhere Referenz der CPU-Auslastung aufweisen. Abhängig von der Skalierungskonfiguration einer Anwendung kann dies unbeabsichtigte Nebenwirkungen haben, z. B. eine höhere Anzahl von Instanzen als erwartet, wenn eine Anwendung für die Skalierung basierend auf der CPU-Auslastung konfiguriert ist. Überprüfen und testen Sie die Konfigurationen der Anwendungsskalierung, damit die Anzahl der Instanzen akzeptabel ist, um dieses Problem zu vermeiden.

Unterschiede beim Anfrageheader

Laufzeiten der ersten Generation ermöglichen, dass Anfrageheader mit Unterstrichen (z.B. X-Test-Foo_bar) an die Anwendung weitergeleitet werden. Laufzeiten der zweiten Generation führen Nginx in die Hostarchitektur ein. Aufgrund dieser Änderung werden Laufzeiten der zweiten Generation so konfiguriert, dass Header mit Unterstrichen (_) automatisch entfernt werden. Vermeiden Sie die Verwendung von Unterstrichen in Anwendungsanfrageheadern, um Anwendungsprobleme zu vermeiden.

Datei app.yaml migrieren

Damit sämtliches Routing in einer einzigen Anwendung verarbeitet wird, muss ein Front Controller eingerichtet werden. Weitere Informationen finden Sie unter Anwendungsstart.

In der PHP 7/8-Laufzeit kann das Handler-Element script nicht angepasst werden. Der einzige gültige Wert ist auto, da der gesamte Traffic über den Befehl "entrypoint" bereitgestellt wird. Alle nicht statischen URL-Handler müssen script: auto enthalten, damit sie bereitgestellt werden können.

Das Verhalten einiger Elemente in der Konfigurationsdatei app.yaml wurde geändert:

ElementÄnderungstypBeschreibung
entrypointHinzugefügtDieses Feld kann optional verwendet werden, um den Befehl anzugeben, der beim Start der Anwendung ausgeführt wird.
threadsafeVerworfenEs wird davon ausgegangen, dass alle Anwendungen threadsicher sind, d. h., eine Instanz kann mehrere Anfragen gleichzeitig verarbeiten.
api_versionVerworfenWird in der PHP-Laufzeit 7/8 nicht mehr benötigt.
application_readableVerworfen
builtinsVerworfen
librariesVeraltetMithilfe einer Metadatendatei wie composer.json können beliebige Abhängigkeiten von Drittanbietern installiert werden.
handlersGeändert
  • Das Feld script ist optional und kann nur den Wert auto enthalten. Verwenden Sie ein Web-Framework wie Laravel, Symfony, Slim oder eine ähnliche Option mit In-App-Routing, um ein Skript auszuführen, wenn eine Anfrage auf eine bestimmte Route trifft.
  • Das Feld "login" wird nicht unterstützt Verwenden Sie das Identity and Access Management (IAM) für die Nutzerverwaltung.

Wenn Sie eines der verworfenen Felder verwenden, tritt bei der Bereitstellung der Anwendung ein Fehler auf.

Weitere Informationen finden Sie in der Referenz zu app.yaml.

Weniger Laufzeitbeschränkungen

Die PHP 7/8-Laufzeiten haben weniger Einschränkungen als die PHP 5.5-Laufzeit.

Weitere Informationen finden Sie in der Dokumentation zur PHP 7/8-Laufzeitumgebung.

Aus dem App Engine PHP SDK migrieren

Um den Aufwand für die Laufzeitmigration und die Komplexität zu verringern, können Sie in der App Engine-Standardumgebung auf viele Legacy-Bundle-Dienste und APIs in der PHP 7/8-Laufzeit zugreifen, z. B. Memcache. Ihre PHP 7/8-Anwendung kann über das App Engine SDK für PHP 7+ die APIs für gebündelte Dienste aufrufen und auf die meisten Funktionen der PHP 5-Laufzeit zugreifen. Nicht alle Legacy-Dienste, die für PHP 5 verfügbar sind, haben einen entsprechenden Dienst in PHP 7/8. Eine vollständige Liste der für PHP 7/8 verfügbaren Legacy-Dienste für gebündelte Dienste finden Sie in der Referenzdokumentation für gebündelte Legacy-Dienste.

Sie können auch Google Cloud-Produkte verwenden, die vergleichbare Funktionen wie die gebündelten Legacy-Dienste bereitstellen. Diese Google Cloud-Produkte bieten eine idiomatische Google Cloud CLI-Clientbibliothek. Für die älteren gebündelten Dienste, die in Google Cloud nicht als separate Produkte verfügbar sind, z. B. die Suche, können Sie Drittanbieter oder andere Behelfslösungen verwenden. Weitere Informationen zur Migration zu nicht gebündelten Diensten finden Sie unter Von gebündelten Diensten migrieren.

Anwendung lokal ausführen

So testen Sie Ihre Anwendung und führen sie lokal aus:

  1. Installieren Sie lokal eine PHP-Version, die einer der PHP 7/8-Laufzeiten entspricht, die in der App Engine-Standardumgebung verfügbar sind.
  2. Webserver installieren und damit Ihre Anwendung lokal bereitstellen

Den HTTP-Server können Sie z. B. durch Ausführen des folgenden Befehls starten:

php -S localhost:8080

Anschließend können Sie sich die Anwendung im Webbrowser unter http://localhost:8080 ansehen.