Migration von Zend Framework zu Laminas
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Das Zend Framework (ZF) gab es seit 2005 und wurde gesponsert von der Firma Zend, die auch die Zend Engine, den Compiler von PHP, maßgeblich mit entwickelt. 2019 wurde entschieden, dass das Framework nicht mehr von der Firma Zend betreut wird. Vielmehr soll das Sponsoring und Weiterentwicklung jetzt unter dem Dach der Linux Foundation 🇬🇧 herstellerneutral und weiterhin als Open Source (New BSD License) geschehen. Im Zuge dessen gab es auch eine Namensänderung. Das Framework heißt jetzt seit Anfang 2020 Laminas.[3] Außer der Namensänderung gab es aus der Sicht eines PHP-Entwicklers bisher keine großartigen Veränderungen, so dass jemand, der mit ZF vertraut ist, sich mühelos in Laminas zurecht finden kann.
Zwar gibt es die alten ZF-Pakete noch auf Github. Dies sind jedoch archiviert und sollten daher tunlichst nicht mehr verwendet werden. Eine Migration bestehender ZF-Installationen auf Laminas ist die empfohlene Vorgehensweise. Die Umstellung auf Laminas ist jedoch erstaunlich einfach und schnell zu bewerkstelligen.
Achtung!
Bis einschließlich Ubuntu 18.10 ist noch Zend Framework 1 in den Paketquellen (universe) enthalten und hat dort den Paketnamen zend-framework. Ebenso sind noch vereinzelte Komponenten von Zend Framework 2 (universe) aus den Ubuntu Paketquellen installierbar (php-zend-*). Alle dies Pakete werden nicht mehr mit Updates versorgt und sollten auf keinen Fall mehr genutzt werden.
Vorbereitung¶
Richtige Composer-Version¶
Am einfachsten geht die Migration mithilfe von Composer.[2] Es wird die Composerversion 1.7.0 oder höher benötigt. Erst ab Ubuntu 19.04 wird diese Voraussetzung erfüllt. Unter Ubuntu 18.04 (Composerversion: 1.6) muss daher zunächst eine manuelle Installation von Composer erfolgen. Ein Anleitung dazu gibt es hier in der Wiki im Composer Artikel.
Die installierte Version lässt sich so ermitteln:
composer --version
Laminas Migrationstool installieren¶
Systemweit¶
Systemweit, genauer gesagt für ein Ubuntu-Benutzerkonto, sind folgende Schritte (ohne Rootrechte) erforderlich:
composer global require laminas/laminas-migration
Damit das Tool ohne Pfadangabe genutzt werden kann, kann man es der Datei ~/.profile hinzufügen. Dazu diese Zeile in einem Editor hinzufügen:
1 | export PATH="$HOME/.composer/vendor/laminas/laminas-migration/bin:$PATH" |
Manuell¶
Natürlich kann man das Tool auch mit dem absoluten Pfad aufrufen, wenn man eine sytemweite Installation nicht wünscht. Dazu laminas-migration in einem beliebigen Verzeichnis folgendermaßen installieren:
composer require laminas/laminas-migration
Ein Projekt umstellen¶
Achtung!
Bevor ein ZF-Projekt auf Laminas umgestellt wird, sollte eine vollständige Sicherheitskopie aller Dateien im Projektverzeichnis in ein separates Verzeichnis erstellt werden, um Datenverlust zu vermeiden.
Ins Hauptverzeichnis des ZF-Projekts wechseln und das Tool folgendermaßen starten:
laminas-migration migrate
Beziehungsweise bei einer nicht-systemweiten Installation:
/PFAD-ZUM-LAMINAS-MIGRATION-TOOL/vendor/bin/laminas-migration migrate
Für ein ZF-Projekt, das der Standardstruktur entspricht, also mit den Unterverzeichnissen module/, vendor/, public/ etc, sollte dies problemlos funktionieren. Bei einer abweichenden Struktur sollte man gegebenenfalls Verzeichnisse, die außer der Reihe existieren, von der Migration ausschließen. Angenommen, man hat im Wurzelverzeichnis des ZF-Projektes ein Verzeichnis namens meine-lib/ mit eigenen PHP-Bibliotheken, so kann man dieses wie folgt von der Migration ausschließen:
laminas-migration migrate --exclude meine-lib
Nun noch die neuen Abhängigkeiten installieren:
composer install
Links¶
Migrationsanleitung 🇬🇧 im Laminas-Blog
Migrationsanleitung 🇬🇧 auf Github
Vom Zend Framework zu Laminas 🇩🇪 - Hintergrundinformationen auf entwickler.de