jacobcyl/ali-oss-storage
Alibaba Cloud OSS adapter for Laravel's Flysystem storage, letting you use Aliyun OSS buckets like local disks via the Storage facade. Supports uploads, presigned URLs, and standard file operations, giving Laravel apps a drop-in cloud filesystem backed by Alibaba Cloud Object Storage Service.
Storage facade, so "can we ship media uploads in the CN environment?" becomes a config decision rather than a sprint of custom SDK work.aliyuncs/oss-sdk-php in a Flysystem adapter." The 2.1.0 maintenance release shifts this marginally in favor of adoption — someone is still fixing real bugs in this adapter, including endpoint handling, which is the single most common source of broken OSS integrations — but it does not lower the cost of long-term ownership.Storage facade abstraction keeps that option open — an argument for this package as a thin adapter only if we commit to never leaking OSS-specific calls into domain code.Storage operations, all within this package's likely capability envelope.^2.1. This downgrades "abandoned dependency" from a likely disqualifier to an open question, and adds two new decision items: (a) whether we pin ^2.1 specifically — older 1.x pins carry the endpoint bugs the release fixes — and (b) whether one bugfix release constitutes a maintenance track record. It does not. Keep adoption as a time-boxed evaluation, but reclassify it from "probably dead" to "lightly maintained, unverified."Consider it when:
put, get, exists, delete, url, temporaryUrl, directory listing. No multipart resumable uploads, no server-side image processing, no STS/temporary-credential flows for browser-direct uploads.^2.1 explicitly. Do not inherit an older constraint from a previous evaluation — the endpoint fixes are the reason to be on this line at all.Look elsewhere when:
For executives (one paragraph): We can enable file and media storage for our China-region users in days instead of weeks by adopting an open-source, MIT-licensed adapter that plugs Aliyun's object storage directly into our existing Laravel storage layer. The project shipped a maintenance release — 2.1.0 — that fixes endpoint-related errors, so the "is this library dead?" concern I flagged earlier is materially weaker than it was, though one release is not yet a track record. There is no license cost, no vendor lock-in at the code level, and it keeps us free to run the same product on AWS elsewhere. I'm still recommending a time-boxed technical validation before we commit it to the roadmap, with a fallback of writing a thin wrapper around Alibaba's official SDK — estimated at one to two engineer-days. The decision needed is approval for that validation spike, not for the dependency itself.
For engineering (the ask): Spike it behind the Storage facade, pinned to ^2.1 — do not evaluate against an older 1.x constraint, since endpoint handling is precisely what 2.1.0 changed. Install, configure a disk in filesystems.php, exercise put/get/exists/delete/url/temporaryUrl against a test bucket on our target Laravel version, and confirm behavior for visibility, path prefixes, and public vs. private URLs. Given the release notes, spend deliberate time on the endpoint matrix: internal vs. public endpoint, custom domain, and region-specific hosts — verify url() and temporaryUrl() produce resolvable links in each case, not just that they return a string. Success criteria: no changes to domain code, and an interface boundary that lets us replace the driver without touching callers. If the spike fails on Flysystem compatibility, we stop and build the ~150-line adapter against aliyuncs/oss-sdk-php instead — same facade contract, no fork, no orphaned dependency. Either way we get a storage abstraction we control; the package is a shortcut, not an architecture.
How can I help you explore Laravel packages today?