10 PHP-Bugs, die echte Projekte lahmlegen

Der Code funktioniert auf deinem Computer. Du pushst ihn auf den Server. Alles bricht zusammen. Es gibt keine Fehler in den Logs. Du siehst einfach nur den falschen Output.

Diese Bugs stammen nicht aus Lehrbüchern. Sie entstehen in echten Login-Systemen, Shops und APIs. Sie sehen bei Code-Reviews völlig unauffällig aus, versagen aber in der Produktion.

Hier sind die Bugs #11 bis #20 und wie man sie behebt.

• Endlosschleifen Das Vergessen der Inkrementierung eines Zählers blockiert den PHP-Prozess. Dies kann deinen gesamten Server zum Absturz bringen. Lösung: Stelle immer sicher, dass deine Schleifenzähler erhöht werden.

• Probleme mit der Groß-/Kleinschreibung PHP betrachtet "Admin" und "admin" als unterschiedliche Strings. Dies führt zu Fehlern bei der Zugriffskontrolle. Lösung: Verwende strtolower(), bevor du Strings vergleichst.

• Mathematik und Abschneiden (Truncation) Die Verwendung von (int) bei einer Dezimalzahl führt nicht zu einer Rundung, sondern schneidet die Nachkommastellen einfach ab. Dies verursacht finanzielle Fehler bei der Abrechnung. Lösung: Verwende round() oder number_format().

• JSON-Fehler json_decode gibt standardmäßig ein Objekt zurück. Wenn du versuchst, es wie ein Array zu verwenden, schlägt das Skript fehl. Lösung: Übergib true als zweiten Parameter, um ein Array zu erhalten.

• XSS-Sicherheitsrisiken Das direkte Ausgeben von Benutzereingaben ermöglicht es Angreifern, Skripte einzuschleusen. Lösung: Verwende immer htmlspecialchars().

• Pfadfehler Relative Pfade funktionieren auf lokalen Rechnern, schlagen aber auf Live-Servern fehl. Lösung: Verwende die __DIR__-Konstante für absolute Pfade.

• Duplikate in den Daten Benutzer klicken oft doppelt auf Absende-Buttons. Dies führt zu doppelten Datenbankeinträgen. Lösung: Prüfe zuerst, ob der Datensatz bereits existiert, und verwende einen UNIQUE-Constraint in deiner Datenbank.

• Zusammenführen von Arrays array_merge() setzt numerische Schlüssel auf Null zurück. Dies zerstört deine Datenstruktur. Lösung: Verwende den + Operator oder array_replace(), um deine Schlüssel beizubehalten.

• Unsichtbare Fehler Das Deaktivieren von Fehlermeldungen in der Produktion ist gut für die Sicherheit. Es ist jedoch schlecht für das Debugging, wenn du sie nicht protokollierst. Lösung: Setze log_errors auf 1 und definiere einen error_log-Pfad.

• Schleifen-Referenzen Eine foreach-Schleife verändert eine Kopie der Daten, nicht das ursprüngliche Array. Lösung: Verwende das &-Symbol, um eine Referenz zu erstellen, aber setze die Variable nach der Schleife immer mit unset() zurück.

Die meisten dieser Bugs werfen keine Fehler. PHP läuft weiter, liefert aber falsche Ergebnisse. Das macht sie gefährlich.

Code zu schreiben ist einfach. Produktionsreifen Code zu schreiben erfordert das Verständnis dafür, wie Dinge scheitern können.

Lies den vollständigen Leitfaden hier: https://dev.to/bikkisingh/10-php-bugs-that-break-real-projects-and-how-to-fix-them-part-2-7hm