Referenz Askallo

Migration einer umfangreichen PHP‑5.6‑Anwendung auf PHP 7.4

Wir von Swoop unterstützen Unternehmen dabei, komplexe und gewachsene PHP‑Applikationen in eine moderne, sichere und wartbare Systemlandschaft zu überführen. Im Rahmen dieses Projekts wurden wir beauftragt, eine umfangreiche, über viele Jahre gewachsene PHP‑5.6‑Anwendung (ohne Framework) auf PHP 7.4 zu migrieren und eine stabile Entwicklungsumgebung aufzubauen.

Herausforderung

Die bestehende Anwendung bestand aus mehreren tausend Dateien verteilt über unterschiedliche Verzeichnisse („htdocs“ und „include“), zahlreichen Individuallösungen und gewachsenen Legacy‑Strukturen. Während der Analyse zeigte sich, dass die vorliegenden Datenbank‑SQL‑Dateien nicht vollständig dem Stand des Produktivcodes entsprachen – es fehlten u. a. Tabellenfelder, die von aktuellen Modulen benötigt wurden. Auch beim Aufbau einer lokalen Testumgebung zeigten sich Besonderheiten im Login‑Bereich: Obwohl die Datenbank korrekt importiert wurde, wurden Login‑Versuche mit vorhandenen Testnutzern abgewiesen. Zusätzlich erfolgte eine automatische HTTPS‑Weiterleitung, obwohl diese serverseitig zunächst deaktiviert worden war. Diese Punkte machten deutlich, dass diverse Altlogiken und Konfigurationsabhängigkeiten im Projekt berücksichtigt werden müssen.

Unsere Vorgehensweise

Um eine sichere und reproduzierbare Arbeitsbasis zu schaffen, haben wir zunächst eine moderne Docker‑Umgebung entwickelt, bestehend aus:

  • PHP 5.6 (Legacy‑Server) – zur Analyse des Ist‑Zustands
  • PHP 7.4 (Zielsystem) – für die Migration und Funktionsvalidierung
  • Tools‑Container für PHPStan, Rector, PHPCS & Composer
  • MySQL‑ und Monitoring‑Services zur Umgebungssimulation

Parallel haben wir eine vollständige statische Code‑Analyse aufgebaut:

  • PHPStan zur Identifikation von logischen Problemen, typischen Fallstricken und Migrationrisiken
  • PHPCS + PHPCompatibility zur Erkennung von Funktionen und Strukturen, die unter PHP 7.x nicht mehr lauffähig sind
  • Rector zur automatisierten Modernisierung und Vorbereitung des Codes auf PHP 7.4

Durch zusätzliche Ausschlussregeln (z. B. für Third‑Party‑ oder Legacy‑Ordner) konnten wir eine effiziente und zielgerichtete Analyse sicherstellen.