Ce qui se passe
Laravel 13.26 ajoute un driver de filesystem read-through, qui compose deux disques : un principal et un disque de repli.
Une lecture cherche d'abord sur le disque principal. Si le fichier n'y est pas encore, il est servi depuis l'ancien disque et recopié au passage vers le nouveau.
Le problème qu'il règle
Une migration de bucket bute toujours sur le même point : le transfert de masse. Synchroniser plusieurs millions de fichiers entre deux fournisseurs se compte en jours, se facture en egress, et déplace autant de fichiers morts que de fichiers vivants.
Gérer la double lecture dans le code applicatif évite le transfert, mais éparpille des Storage::disk('old') dans chaque chemin de lecture — et ce genre de fallback survit longtemps à la migration qui l'a justifié.
Le comportement obtenu
Les fichiers effectivement consultés basculent d'eux-mêmes vers le nouveau disque, à leur première lecture. Ceux que personne ne demande restent en place. La bascule ne se joue pas sur un déploiement unique, et le retour arrière est un changement de configuration.
Le piège
Deux règles de routage à connaître avant la production. Les listings de répertoire ne consultent que le disque principal : un code qui itère un dossier ne verra pas ce qui dort encore sur le fallback. Les suppressions ne touchent que le principal — supprimer un fichier encore présent sur l'ancien disque le fait réapparaître à la lecture suivante.
La promotion est par ailleurs volontairement best-effort : si la copie vers le principal échoue, la lecture réussit quand même et l'exception est avalée. 'throw_on_promotion_failure' => true inverse ce choix.
À savoir
Arrivé par la PR #61140, signée Taylor Otwell. Le disque se compose à partir de deux disques déclarés, ou de deux configurations inline.