Laravel 13.32.0 se publicó el 16 de septiembre de 2026. La versión amplía el broadcasting, las transferencias entre discos y el control de las colas.
<?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 aportó el driver de Mercure. Mercure distribuye eventos en tiempo real mediante Server-Sent Events, o SSE. El driver toma de las variables de entorno MERCURE_URL, MERCURE_PUBLIC_URL, MERCURE_JWT_SECRET y MERCURE_ENCRYPTION_KEY. El hub integrado de FrankenPHP funciona sin URL ni secret. Se admiten canales de presencia y canales private-encrypted-* con cifrado de extremo a extremo. La PR #549 añade soporte para clientes en Laravel Echo. La PR #61474 incorpora el driver al framework y la #61587 añade Mercure al instalador de broadcasting.
Jack Bayliss añadió copyToDisk() y moveToDisk() a FilesystemAdapter. Los métodos cubren las transferencias entre discos que antes requerían una secuencia manual de lectura y escritura mediante streams. copyToDisk() conserva el archivo de origen, mientras que moveToDisk() lo elimina. Ambos aceptan un disco de destino. copyToDisk() también puede recibir una ruta de destino diferente. La PR #61519 permite pasar una instancia de filesystem en lugar del nombre de un disco. La implementación principal está en la #61511.
Queue::pause(), Queue::resume() y Queue::pauseFor() aceptan ahora valores enum. Los ejemplos usan Queues::notifications y Connections::Redis, con 60 segundos como duración de la pausa. Esto sigue el soporte de enums que ya existía para los atributos Queue y Connection de los jobs y para métodos de manager como route() y forward(). El cambio corresponde a la PR #61464.
El changelog establece el valor predeterminado memoryExceededExitCode de Cloud en 12.x mediante la #61432. También ajusta los tipos de retorno de withFreshQueryLog() en la #61458 y del callback de autocompletado de askWithCompletion() en la #61487. La #61464 habilita enums en las operaciones de pausa de colas. hasIndex() compara los nombres de índice en minúsculas desde la #61506. containsStrict() corrige el caso en que una closure coincide con null en la #61507. Los callbacks de violaciones de Eloquent reciben la excepción en la #61504. Las variables sin uso pasan a ser argumentos con nombre en la #61513. SupportBinaryCodecTest se actualiza en la #61512. Factory::raw() gestiona un count de cero en la #61510. SessionHandlerInterface recibe la implementación que faltaba para PHP 9 en la #61517.
Las demás entradas añaden los métodos de filesystem en la #61511, el driver de Mercure en la #61474, las instancias de filesystem en la #61519 y la instalación de Mercure en la #61587. Str::password() deja de generar caracteres adicionales y errores de validación relacionados en la #61521. Str::camel() corrige el tratamiento de caracteres multibyte iniciales en la #61545. collapseWithKeys() deja de fallar con claves de cadena en la colección externa en la #61539. SessionGuard::userFromRecaller() ya no lanza un TypeError cuando getAuthPassword() devuelve null en la #61532. Las pruebas con mocks usan más la implementación real en la #61563. appendToPriorityList() gestiona middleware referenciado en la primera posición en la #61567. Los métodos de colección que mutan datos reciben mejores tipos de retorno en la #61571. CloudManager incorpora isManagedQueue en la #61568. La caducidad de las entradas del caché Redis con tags se sincroniza al ejecutar touch en la #61574. Los payloads de jobs se decodifican una sola vez en la #61526. sum() obtiene el tipo de retorno correcto cuando su clave coincide con el nombre de una función global en la #61578. Authorizable incorpora UnitEnum en la #61589. El cifrado de archivos de entorno legibles conserva los valores sin cambios en la #61503.




Comentarios
Aún no hay comentarios — escribe el primero.
Inicia la conversación
Sin cuenta ni contraseña — introduce tu correo y te enviamos un enlace de acceso de un solo uso. ¿Primera vez? Todo se configura automáticamente.
Tu valoración se aplicará automáticamente al iniciar sesión.
Revisa tu bandeja de entrada
Hemos enviado un enlace de acceso a …. Ábrelo en este dispositivo — esta pestaña te conectará automáticamente.
¿No llega nada? Mira en la carpeta de spam — y marca el correo como «No es spam» para que la próxima vez llegue directo.