What is this?
Flysystem is a file storage library for PHP. It gives you one interface to many filesystems, local or remote, so your code is not locked to a single storage vendor.
Is it a library I add to my code, or something I deploy?
A library, not a service: your PHP code calls it directly inside your application. There is no UI, no server and nothing to run on its own.
How do I add it to my project?
Install it as a Composer package (composer require league/flysystem), then create a Flysystem instance with the adapter for your storage, such as a local disk, S3 or FTP, and work with files through its API.
Do I need anything besides PHP?
Just PHP and Composer; the library itself needs no database or external service. Adapters for cloud storage naturally need that service's credentials.
Which storage backends can it talk to?
Official adapters cover local disk, FTP, SFTP, memory, AWS S3, AsyncAws S3, Google Cloud Storage, MongoDB GridFS, WebDAV and Zip archives. Community adapters add Azure Blob, Dropbox, Google Drive, OneDrive and more.
How hard is it to switch storage later?
That's the point of the abstraction: code written against Flysystem's single interface keeps working when you swap the adapter, say from local disk to S3.
Does it help with flaky backends or caching?
Yes, helper adapters include RetryAdapter, FallbackAdapter, LogAdapter and ReadWriteAdapter, plus a Metadata Cache and a lazy Migration adapter.
Can I treat a zip archive as a filesystem?
Yes, ZipArchive is in the officially supported adapter list, so a zip file can be used as a storage backend through the same interface.
What are similar projects?
minio, transfer.sh, rclone, laravel-ide-helper, gat, alist, filestash, puter
Which topics is it in?
amazon-s3, dropbox, php-library, google-cloud, cloud-storage, filesystem, laravel, s3, storage, aws, mongodb, php