The filesystem abstraction moved from returning false on failure to throwing, and Laravel 9 wraps that in a setting rather than a change.
// config/filesystems.php
'disks' => [
's3' => [
'driver' => 's3',
'throw' => true, // opt in to the new behaviour
],
],
// with throw => false (the default), a failed write
// returns false and the reason is gone.
// with throw => true, an exception with a message.
Defaulting to the old behaviour is a kindness that also means most applications upgraded without gaining anything. Turning it on is a small change with a real consequence: every write that was silently failing starts throwing, which is the point and will surface something. Doing it one disk at a time, starting with the one nobody writes to often, is how it gets adopted rather than reverted.