freyo/flysystem-qcloud-cos-v5
A Flysystem v5 adapter for Tencent Cloud COS (Cloud Object Storage), letting Laravel and PHP apps store, read, and manage files on QCloud COS through the familiar Flysystem and Laravel Storage APIs.
Evidence base: This assessment is derived solely from the 2.2.1 release note (a single change: Laravel 9 support via PR #53) and the package's identity as a Flysystem v3 adapter for Tencent Cloud COS v5. No composer constraints, CI results, or issue history were provided, so several findings below are flagged for verification.
Architecture fit
Storage facade as a custom disk, so it does not dictate application architecture — a low-coupling, low-blast-radius dependency.FilesystemAdapter contract, callers can remain on the portable Storage:: API and keep the option of swapping disks later. That abstraction is the main architectural safeguard and should be enforced in code review.Integration feasibility
composer require, register the service provider (if not auto-discovered), add a cos disk entry in config/filesystems.php with bucket, region, credentials, and optional CDN domain. Expect well under a day for a developer familiar with Laravel.Technical risk
temporaryUrl, multipart upload, and custom-domain paths. Flysystem adapters commonly have gaps precisely in those areas.Key questions
illuminate/* and laravel/framework constraints does 2.2.1 declare, and does it install cleanly on Laravel 10/11?temporaryUrl() (presigned URLs), multipart uploads for large objects, custom/CDN domains, and server-side encryption?overtrue/flysystem-qcloud-cos) and how do their feature sets and maintenance activity compare?Stack fit
Storage facade. It is a drop-in disk driver alongside local and s3; it does not replace the filesystem manager or require application-layer changes.Migration path
^2.2.1 in composer.json and confirm the lock file resolves on the target PHP/Laravel pair; (2) add the cos disk in config, credentials from environment/secrets manager, never committed; (3) run in shadow mode — write to COS while still reading from the incumbent disk — and validate integrity, content types, and URL generation; (4) cut reads over per-bucket by feature flag; (5) decommission the old disk after a rollback window.Storage::disk('cos'), so a reversal is a config change, not a code change.Compatibility
temporaryUrl/CDN-domain configuration is exercised, as these are the most common break points when moving from local to a remote disk (URL signing, expiry, and public-read assumptions change).Sequencing
Maintenance
Support
Scaling
Failure modes
Ramp-up
Storage facade: roughly half a day to a working disk, one to two days including tests and IAM/CORS setup.How can I help you explore Laravel packages today?