- How do I install jacobcyl/ali-oss-storage in Laravel?
- Run composer require jacobcyl/ali-oss-storage. On Laravel 5.5+ the service provider is auto-discovered; on older versions you register it manually. Then add an oss disk to config/filesystems.php with your OSS credentials. Validate with composer require in a scratch branch on your target Laravel version before committing.
- Which Laravel and PHP versions does jacobcyl/ali-oss-storage support?
- It was built for the Flysystem v1 era and works cleanly on Laravel 5.5–5.8. Laravel 6 and 8 can work only while they use Flysystem 1.x. Laravel 9+ ships Flysystem v3 with a different adapter contract, so the driver will not bind without a port. Treat PHP 8.1/8.2 support as unverified because the last release is from 2018.
- How do I configure an Aliyun OSS disk in config/filesystems.php?
- Add a disk with driver set to oss and include access_id, access_secret, endpoint, bucket, and the CNAME flag where applicable. Use the same disk name, such as oss, across environments so call sites stay swappable. Keep secrets out of source control by loading them from env variables. Double-check whether your endpoint requires path-style or CNAME behavior.
- Does this package work with Laravel 9, 10, or 11?
- No, not out of the box. Laravel 9 and later use Flysystem v3, while this adapter targets Flysystem v1 semantics and the older Aliyun OSS SDK. You would need to fork and port the adapter, or adopt a Flysystem v3-native package. Verify with an actual composer require against your target framework rather than assuming.
- How do I generate signed or temporary URLs for private OSS buckets?
- The adapter exposes temporaryUrl through the Storage facade, but expiry behavior and endpoint handling are historical weak points, so test it explicitly. Private buckets with short-lived signed URLs should be part of your conformance suite. The package has no first-class STS or temporary-credential support, so long-lived keys in config remain the default. For stricter security, consider a maintained adapter or a custom signed-URL path.
- What are the best alternatives to jacobcyl/ali-oss-storage?
- iidestiny/laravel-filesystem-oss and alphasnow/aliyun-oss-laravel are the default comparison points. Both are Flysystem v3-native and better suited to Laravel 9+. They expose the same Storage::disk() contract, so migration is mostly config and adapter parity. Compare on temporaryUrl, multipart uploads, and directory semantics before choosing.
- Is jacobcyl/ali-oss-storage still maintained?
- No. The last release was in April 2018, there is a single maintainer, and there is no PHP 8.1/8.2 CI or security response path. The low dependents count reflects abandonment rather than necessarily bad code. For production, plan for a fork or a maintained alternative.
- Can I use a custom OSS endpoint or CNAME with this adapter?
- Yes, configuration includes endpoint and a CNAME flag. Path-style versus CNAME endpoint behavior is a common misconfiguration, so test uploads and signed URLs against your actual bucket. Also confirm that your endpoint matches the region and that the bucket is not being addressed in the wrong style. Surface Guzzle and SDK conflicts early.
- How should I test OSS storage in a Laravel app?
- Use a throwaway OSS bucket for integration tests and verify putFileAs, exists, delete, deleteDirectory, and temporaryUrl explicitly. Laravel's Storage::fake is useful for local disks but may not reproduce custom adapter semantics. Add a conformance suite so you can swap adapters without changing call sites. Mocking the SDK is fine for unit tests but not a substitute for bucket-level integration checks.
- What are the production risks of using jacobcyl/ali-oss-storage?
- The main risk is maintenance: dormant since 2018, older transitive dependencies, and no security patch path. OSS-specific risks include credentials in filesystems.php, no STS support, endpoint misconfiguration, and flat-object-store semantics for deleteDirectory and temporaryUrl. Large files proxied through PHP are a scaling trap regardless of driver. Pin PHP and Laravel versions and run a parity test suite before go-live.