- How do I install and configure the Google Drive Flysystem adapter in Laravel?
- Install it with Composer using the package name jeffersongoncalves/flysystem-google-drive, then add a disk entry in config/filesystems.php and supply credentials through environment variables. The package is described as a zero-config Laravel driver, so the happy path is Composer require, one disk entry, and a smoke test of put, get, list, and delete through Storage::disk().
- Which Laravel and PHP versions does this package support?
- It is a League Flysystem v3 adapter, and Laravel 9 and later ship Flysystem 3, so Laravel 9, 10, and 11 on PHP 8.x are the expected target. Check the package's Composer constraints against your application's pinned framework version before committing, because this is a 1.0.0 first release.
- Do I need a Google service account or an OAuth refresh token for the Drive disk?
- The adapter needs Google Drive credentials supplied through configuration or environment variables. The evaluation flags the credential shape as a key unknown, so confirm whether your release expects service-account JSON or user-delegated OAuth refresh tokens before building around it.
- Does this adapter support Google Shared Drives?
- Shared Drive support is listed as an open question in the package evaluation, so do not assume it works out of the box. Test against a dedicated test Shared Drive and confirm how files created by a service account are owned and shared.
- How do I upload, list, move, and delete files with Laravel's Storage facade?
- Register a Google Drive disk and use normal Storage calls such as put(), get(), files() or allFiles(), move(), and delete(). If your application already uses the Storage facade, this is a disk swap rather than a rewrite of call sites.
- Why does isReachable() return false instead of throwing when the folder is missing?
- The package positions that behavior as a correctness fix: a missing folder is reported as unreachable rather than raising an exception. It also makes delete() surface real API errors instead of silently tolerating failures. Audit your try/catch blocks and existence checks around those calls, because code that ignored failures may now behave differently.
- What do url() and temporaryUrl() return for a Google Drive disk?
- Google Drive has no direct presigned-URL equivalent, and the evaluation flags URL behavior as an open question. Do not assume temporaryUrl() will behave like S3; verify what url() and temporaryUrl() return in your release, or generate access through Drive permissions.
- How are duplicate filenames, case sensitivity, and renames handled?
- Drive addresses files by ID, permits duplicate names, is case-insensitive by default, and has no atomic rename, so S3 or local-filesystem assumptions can break. The adapter includes path-cache invalidation after move or rename, but your code should still avoid relying on unique names or case-sensitive paths.
- Can I use this package for backups and large files, and does it support resumable uploads?
- Resumable or chunked upload support and size ceilings are open questions in the evaluation. For backups and large files, test representative sizes and confirm how the adapter handles quota exhaustion, 429, and 403 responses before depending on it in production.
- How does this compare to other Google Drive Flysystem adapters, and what should I check before production?
- It is a 1.0.0 first release from a likely single-maintainer project, positioned as correctness fixes over an unmaintained alternative: isReachable() returns false, delete() surfaces errors, path caches invalidate after move or rename, and query strings are escaped. Pin an exact version, review vendor and security posture, watch upstream commit cadence, and run contract tests for upload, overwrite, list, move, delete, missing folders, and filenames with quotes, spaces, unicode, and slashes.