Laravel 13.25.0 erschien am 11. August 2026 und bringt drei Hauptfeature-Bereiche sowie zahlreiche Fehlerbehebungen.
Warteschlangen-Management: Das Framework erforderte bisher das manuelle Pausieren einzelner Warteschlangen nach Name – ein umständlicher Prozess beim Deployment mit mehreren Workern über benannte Queues. Version 13.25 fügt queue:pause --all und queue:resume --all Kommandos hinzu, sowie entsprechende Queue::pauseAll() und Queue::resumeAll() Facade-Methoden. Diese implementieren einen einzelnen globalen Cache-Schlüssel, den Worker neben Queue-spezifischen Flags prüfen. Beide Pause-Ebenen existieren unabhängig: resumeAll() löscht nur das globale Flag und lässt individuell pausierte Queues unangetastet. Zwei neue Events, QueuesPaused und QueuesResumed, werden neben existierenden Pro-Queue-Equivalenten ausgelöst.
Terminal-Interface: Das artisan dev-Kommando nutzte bisher concurrently, das alle Prozessausgaben in einen scrollbaren Feed vermischte, wodurch relevante Logs schwer zu finden waren. Es läuft nun über @laravel/multiplex mit drei Modi: tabs (Standard, ein Prozess pro Tab mit Suche und prozessabhängigem Neustart), stream (vermischt aber scrollbar und durchsuchbar) und inline (einfache Ausgabe für Non-TTY-Umgebungen). Modi sind pro Ausführung wählbar (php artisan dev --stream) oder projektweit via DevCommands in einem Service Provider konfigurierbar. Windows fällt auf concurrently zurück; multiplex benötigt macOS oder Linux mit Node v22.13+. Gepufferte Logs werden beim Exit in das Hauptterminal gedruckt, Datenverlust wird verhindert.
Image-API: Die Image-Klasse implementiert nun Responsable, weshalb Routen Image-Instanzen direkt zurückgeben können. Das Framework handhabt toResponse() automatisch und gibt eine 200-Antwort mit verarbeiteten Bytes und einem Content-Type zurück, der dem Output-Format entspricht. Zwei Ergänzungen begleiten dies: Image::fromStream() liest Bilddaten aus einer Stream-Ressource (z. B. S3), und toFormat() ist nun öffentlich, akzeptiert einen vom Benutzer bereitgestellten Format-String und wirft ImageException bei nicht unterstützten Formaten.
Queue-Observability: Das neue UniqueJobSkipped-Event wird ausgelöst, wenn ein Job mit einem ShouldBeUnique-Lock nicht erworben werden kann, was das vorherige stille Verhalten ersetzt. JobTimedOut enthält nun eine $timeout-Eigenschaft mit den überschrittenen Sekunden, die Job-Level-Timeouts von Worker-Timeouts unterscheidet. Notifications respektieren fail-on-timeout via eine $failOnTimeout-Eigenschaft oder #[FailOnTimeout]-Attribut, um zu verdeutlichen, ob ein Timeout Third-Party-Zustellung verhindert hat. QueueFake weist nun auch gefälschten Jobs UUIDs zu, was echtes Driver-Verhalten entspricht.
Weitere Verbesserungen: withoutCookies() Methode akzeptiert ein Array von Cookie-Namen oder -Instanzen zum Löschen mehrerer Cookies auf einmal. foreignUlidFor() Schema-Helper erstellt explizit ULID-Foreign-Key-Spalten. Request::all() bevorzugt nun Input gegenüber Dateien, wenn beide denselben Namen verwenden, was die bisherige array_replace_recursive()-Reihenfolge umkehrt. Zahlreiche Fixes behandeln Http-Client-Globalkonfigurationsisolation, gelöschte Modelle in queued Broadcast-Events, Gate::forUser()-Ablehnungsantworten, String-Ersetzungs-Grenzfälle, Mail-Queue-Enum-Verarbeitung, Maintenance-Mode-Cache-Race-Conditions, Container-Build-Stack-Lecks, Cache-Typfehler, HEIC-Dimensionsberichte, LazyCollection-Flipping, asynchrone HTTP-Retry-Callbacks, Schedule-List-Zeitzone-Konvertierung und Typ-Annotationen über mehrere Methoden hinweg.
Kommentare
Noch keine Kommentare — schreib den ersten.
Starte die Diskussion
Kein Konto, kein Passwort nötig — gib einfach deine E-Mail-Adresse ein, wir senden dir einen einmaligen Anmelde-Link. Beim ersten Mal bist du damit automatisch angemeldet.
Deine Bewertung wird nach der Anmeldung automatisch übernommen.
Schau in dein Postfach
Wir haben einen Anmelde-Link an … gesendet. Öffne ihn auf diesem Gerät — dieser Tab meldet dich automatisch an.
Nichts angekommen? Wirf einen Blick in den Spam-Ordner — und markiere die Mail dort als „Kein Spam“, dann landet sie künftig direkt im Postfach.