platformcommunity/flysystem-bunnycdn
Flysystem adapter for BunnyCDN
v3.4.1
549K downloads/mo
#4083 most downloaded on Packagist
PlatformCommunity/flysystem-bunnycdn
What this package is like to depend on
Last release 8 days ago
15 Aug 2026
Release timing varies
gaps range from 1 weeks to 1.2 years
Rarely documented
notes for 9 of 50 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
51 releases · first in 2019
7 releases in the last 12 months
see the full history below
Release timeline
49 releases · Dec 2019 to Aug 2026Releases
latest 51-
v3.4.115 Aug 2026Release notes
Open source →What's Changed
Fixed
- Empty root listings (e.g. Laravel
allFiles()) — storage request URLs for root-level paths contained a double slash (https://{region}.storage.bunnycdn.com/{zone}//), which the Bunny API rejects. Paths are now normalized in a single place, with a regression test asserting the exact request URI (#75)
Full Changelog: v3.4.0...v3.4.1
Release notes
Open source →Fixed
- Storage request URLs could contain a double slash for root-level paths (
https://{region}.storage.bunnycdn.com/{zone}//), which the Bunny API rejects — root listings (e.g. Laravel'sallFiles()) could come back empty (#75). Paths are now normalized in a single place, and a regression test asserts the exact request URI.
- Empty root listings (e.g. Laravel
-
v3.4.015 Aug 2026Release notes
Open source →What's Changed
Added
- Root path support — third
BunnyCDNAdapterconstructor argument is now arootpath prefix, scoping all operations to a storage-zone subdirectory (#96) - Laravel-compatible temporary URLs —
getTemporaryUrl()makesStorage::disk('bunnycdn')->temporaryUrl()work out of the box (#97)
Changed
- PHP floor raised to
^8.3(8.2 EOL 31 Dec 2026) fzaninotto/faker(abandoned) →fakerphp/faker;laravel/pint^0.2→^1.30;phpunit^10→^11.5- PHPStan level 0 → 5 (
phpstan.neon.dist); tests migrated to#[Test]attributes - CI: modernized actions, PHP 8.3/8.4/8.5 matrix, local PHPStan, guarded steps for legacy branches
Fixed
deleteDirectory('')could delete the storage zone root — now guarded- Numeric/boolean file content no longer
TypeErrors ondownload() - Malformed timestamps no longer fatal in
lastModified() writeBatch()failures report the target path, not a batch index
Tests
- 158 → 235 tests, incl. full conformance suite for root-scoped adapters (
RootTest)
Full Changelog: v3.3.10...v3.4.0
Release notes
Open source →Added
- Root path support — the third
BunnyCDNAdapterconstructor argument is now arootpath prefix, scoping all operations (write, read, list, delete, move, copy, URLs) to a subdirectory of the storage zone. Listed paths are root-relative; public and temporary URLs are root-scoped and signed against the root-scoped path. Resolves the long-requested "root" config support (#96, discussion #30). - Laravel-compatible temporary URLs —
BunnyCDNAdapter::getTemporaryUrl()implements the method Laravel'sFilesystemAdapterlooks for, soStorage::disk('bunnycdn')->temporaryUrl()now works out of the box. Accepts aDateTimeInterfaceor minutes-from-now integer, plus additional query parameters that are signed into the URL (#97).
Changed
- PHP floor raised to
^8.3(PHP 8.2 reaches end-of-life 31 December 2026). - Replaced the abandoned
fzaninotto/fakerwithfakerphp/faker(drop-in, same namespace). laravel/pint^0.2.3→^1.30(fixes PHP 8.5 deprecation warnings).phpunit/phpunit^10.0→^11.5(10.x is end-of-life; PHPUnit 12+ drops the doc-comment metadata support thatflysystem-adapter-test-utilitiesrelies on).- PHPStan raised from the default level 0 to level 5 via
phpstan.neon.dist; reported issues fixed. - Test methods migrated from
@testdoc-comments to#[Test]attributes (deprecated in PHPUnit 11). - CI:
actions/checkout@v7,shivammathur/setup-php@v2,actions/cache@v6,codecov/codecov-action@v7(replacing the deprecated bash uploader); PHP matrix8.3/8.4/8.5; PHPStan and Pint steps guarded so the shared workflow keeps working on the legacyv1/v2branches.
Fixed
deleteDirectory('')could send aDELETEfor the storage zone root — now guarded withUnableToDeleteDirectory.- Files whose content is numeric or boolean (e.g.
123) no longer faildownload()with aTypeError— non-array JSON payloads return the raw body. parse_bunny_timestamp()no longer fatals on malformed timestamps (falls back to0).writeBatch()failures now report the failing target path instead of a numeric batch index.lastModified()/fileSize()on directories now throwUnableToRetrieveMetadataexplicitly instead of relying on a return-typeTypeError.
Tests
- New
RootTest— full flysystem conformance suite against a root-scoped adapter, plus targeted root tests (trailing-slash normalization, root scoping, root-relative listings, root-signed temporary URLs,writeBatchwith root, root +PathPrefixedAdaptercomposition). - Regression tests for the root-deletion guard, malformed timestamps,
request()JSON decode edge cases, and full-URL temporary URLs with a root configured. - Suite grew from 158 to 235 tests.
- Root path support — third
-
v3.3.1004 Feb 2026Release notes
Open source →What's Changed
- Added pullzone URL to temporaryUrl generation by @chrispage1 in #93
- Ability to add query params to a temporary URL by @chrispage1 in #95
Full Changelog: v3.3.8...v3.3.10
-
v3.3.926 Jan 2026Release notes
Open source → -
v3.3.823 Jan 2026Release notes
Open source →What's Changed
- Added support for temporary URLs by @chrispage1 in #88
- Push to v3 Branch by @sifex in #89
Full Changelog: v3.3.6...v3.3.8
What's Changed
- Added support for temporary URLs by @chrispage1 in #88
- Push to v3 Branch by @sifex in #89
- HOTFIX: update on 3.3.7 by @chrispage1 in #90
Full Changelog: v3.3.6...v3.3.8
-
v3.3.723 Jan 2026Nothing published for this version
-
v3.3.622 Jan 2026Release notes
Open source →What's Changed
- Support for true streaming of files by @chrispage1 in #86
- Merge to v3 by @sifex in #87
New Contributors
- @chrispage1 made their first contribution in #86
Full Changelog: v3.3.5...v3.3.6
-
v3.3.529 Oct 2024Release notes
Open source →What's Changed
- add writeBatch by @tinect in #81
- Add pull_zone to configs by @slava-vishnyakov in #77
- fix: Los Angeles region by @ralphjsmit in #76
New Contributors
- @slava-vishnyakov made their first contribution in #77
- @ralphjsmit made their first contribution in #76
Full Changelog: v3.3.4...v3.3.5
-
v3.3.425 Apr 2024Release notes
Open source →What's Changed
- feat: prevent deleting file when moving to same destination by @tinect in #71
- fix: ignore NotFoundExceoption when deleting directory by @tinect in #72
- fix: determine the correct type of file or directory on the specific methods by @tinect in #74
Full Changelog: v3.3.3...v3.3.4
-
v3.3.329 Jan 2024Release notes
Open source →What's Changed
- feat: prevent delete operation from deleting all contents by @tinect in #68
- Ensure base url is correct when the API returns uppercase region by @joshbmarshall in #69
New Contributors
- @joshbmarshall made their first contribution in #69
Full Changelog: v3.3.2...v3.3.3
-
v3.3.225 Sep 2023Nothing published for this version
-
v3.3.123 Nov 2022Nothing published for this version
-
v3.3.016 Nov 2022Nothing published for this version
-
v3.2.412 Nov 2022Nothing published for this version
-
v3.2.312 Nov 2022Nothing published for this version
-
v3.2.2no dateNothing published for this version
-
v3.2.125 Jul 2022Nothing published for this version
-
v3.2.023 Jul 2022Nothing published for this version
-
v3.1.414 Jul 2022Nothing published for this version
-
v3.1.313 Jul 2022Nothing published for this version
-
v3.1.213 Jul 2022Nothing published for this version
-
v3.1.115 Apr 2022Nothing published for this version
-
v3.1.016 Mar 2022Nothing published for this version
-
v3.0.121 Feb 2022Nothing published for this version
-
v3.0.021 Feb 2022Nothing published for this version
-
v3.0.0-alpha-121 Feb 2022 pre-releaseNothing published for this version
-
v2.4.016 Nov 2022Nothing published for this version
-
v2.3.115 Apr 2022Nothing published for this version
-
v2.3.016 Mar 2022Nothing published for this version
-
v2.2.021 Feb 2022Nothing published for this version
-
v2.1.114 Jan 2022Nothing published for this version
-
v2.1.014 Jan 2022Nothing published for this version
-
v2.0.014 Jan 2022Nothing published for this version
-
v1.3.115 Apr 2022Nothing published for this version
-
v1.3.016 Mar 2022Nothing published for this version
-
v1.2.121 Feb 2022Nothing published for this version
-
v1.2.021 Feb 2022Nothing published for this version
-
v1.1.114 Jan 2022Nothing published for this version
-
v1.1.014 Jan 2022Nothing published for this version
-
v1.0.013 Jan 2022Nothing published for this version
-
v0.3.513 Jan 2022Nothing published for this version
-
v0.3.412 Jan 2022Nothing published for this version
-
v0.3.322 May 2021Nothing published for this version
-
v0.3.225 Nov 2020Nothing published for this version
-
v0.3.130 Sep 2020Nothing published for this version
-
v0.2.230 Sep 2020Nothing published for this version
-
v0.2.108 Dec 2019Nothing published for this version
-
v0.2.008 Dec 2019Nothing published for this version
-
v0.1.1no dateNothing published for this version
-
v0.304 Aug 2020Nothing published for this version
-
v0.108 Dec 2019Nothing published for this version