Laravel 13.32.0 ist am 16. September 2026 erschienen. Die Version erweitert Broadcasting, Dateitransfers zwischen Datenträgern und die Steuerung von Queues.

filesystem.php
<?php
Storage::disk('local')->copyToDisk('backup', 'reports/report.csv');
Storage::disk('local')->moveToDisk('backup', 'reports/report.csv');
Storage::disk('local')->copyToDisk('s3', 'reports/report.csv', '2026/report.csv');

Kévin Dunglas steuerte den Mercure-Treiber bei. Mercure überträgt Echtzeitereignisse über Server-Sent Events, kurz SSE. Der Treiber verwendet die Umgebungsvariablen MERCURE_URL, MERCURE_PUBLIC_URL, MERCURE_JWT_SECRET und MERCURE_ENCRYPTION_KEY. Der integrierte Hub von FrankenPHP funktioniert ohne URL und Secret. Unterstützt werden Presence-Channels sowie Ende-zu-Ende-verschlüsselte private-encrypted-* Channels. PR #549 ergänzt die Client-Unterstützung in Laravel Echo. PR #61474 bringt den Treiber in Laravel, #61587 bindet Mercure in den Broadcasting-Installer ein.

Jack Bayliss hat copyToDisk() und moveToDisk() zu FilesystemAdapter hinzugefügt. Damit lassen sich Dateien zwischen Datenträgern übertragen, ohne den bisherigen manuellen Ablauf aus Lese- und Schreibstream. copyToDisk() lässt die Quelldatei bestehen, moveToDisk() entfernt sie. Beide Methoden akzeptieren einen Ziel-Datenträger. copyToDisk() kann zusätzlich einen abweichenden Zielpfad erhalten. PR #61519 erlaubt außerdem eine Filesystem-Instanz anstelle eines Datenträgernamens. Die Hauptänderung steht in #61511.

Queue::pause(), Queue::resume() und Queue::pauseFor() akzeptieren nun Enum-Werte. Die Beispiele verwenden Queues::notifications und Connections::Redis sowie 60 Sekunden als Pausendauer. Damit entspricht die Queue-Steuerung der bestehenden Enum-Unterstützung für Queue- und Connection-Attribute von Jobs sowie für Manager-Methoden wie route() und forward(). Die Änderung stammt aus PR #61464.

Der Changelog setzt in 12.x den Standardwert memoryExceededExitCode für Cloud in #61432. Rückgabetypen werden in withFreshQueryLog() durch #61458 und für den Autovervollständigungs-Callback von askWithCompletion() durch #61487 berücksichtigt. Enum-Argumente für die Queue-Steuerung folgen in #61464. hasIndex() vergleicht Indexnamen nun kleingeschrieben in #61506. containsStrict() behandelt Closures korrekt, die auf null passen, in #61507. Eloquent-Verletzungs-Callbacks erhalten die Exception in #61504. Nicht verwendete Variablen werden in #61513 zu benannten Argumenten. SupportBinaryCodecTest wird in #61512 aktualisiert. Factory::raw() verarbeitet eine Anzahl von null in #61510. SessionHandlerInterface erhält die fehlende Implementierung für PHP 9 in #61517.

Weitere Einträge fügen die Dateimethoden in #61511, den Mercure-Treiber in #61474, Filesystem-Instanzen in #61519 und den Mercure-Installationsweg in #61587 hinzu. Str::password() erzeugt in #61521 keine zusätzlichen Zeichen und keine entsprechenden Validierungsfehler mehr. Str::camel() behandelt mehrbyteige Anfangszeichen in #61545 korrekt. collapseWithKeys() stürzt bei äußeren Collections mit String-Schlüsseln in #61539 nicht mehr ab. SessionGuard::userFromRecaller() wirft bei null als Rückgabe von getAuthPassword() in #61532 keinen TypeError mehr. Gemockte Tests greifen in #61563 stärker auf die echte Implementierung zurück. appendToPriorityList() verarbeitet in #61567 referenzierte Middleware am Listenanfang. Veränderte Collection-Methoden erhalten in #61571 präzisere Rückgabetypen. CloudManager bekommt in #61568 isManagedQueue. Die Ablaufzeit von Redis-Tag-Cache-Einträgen wird bei touch in #61574 synchronisiert. Job-Payloads werden in #61526 nur einmal dekodiert. sum() erhält in #61578 den korrekten Rückgabetyp, wenn sein Schlüssel dem Namen einer globalen Funktion entspricht. Authorizable bekommt in #61589 UnitEnum. Verschlüsselte, lesbare Umgebungsdateien bewahren unveränderte Werte in #61503.