Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Ckfinder Symfony Bundle Laravel Package

kocal/ckfinder-symfony-bundle

A Symfony bundle that integrates CKFinder, the file manager and browser, into your application. It provides configuration, routing, and integration helpers so you can upload, browse, and manage files and images, including use alongside CKEditor.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit: poor — nominal mismatch. This is a Symfony bundle, not a Laravel package. It ships a Bundle subclass, a DI extension, and a Configuration tree consumed by Symfony's kernel at container-compile time. Laravel has no bundle loader, no services.yaml, and no compiler passes; composer require would pull symfony/http-kernel, symfony/dependency-injection, and symfony/config into a Laravel app purely as dead weight. There is no supported path to use this package in a Laravel codebase. The only legitimate leverage is as a reference implementation: it demonstrates how to wire CKFinder 3's PHP connector to a Flysystem 2 filesystem abstraction. That pattern ports; the package does not.

What the package actually solves. CKFinder ships a PHP connector that expects a backend implementing CKSource's Backend contract over local disk. This bundle is a thin shim that (a) registers the connector as a Symfony service, (b) maps CKFinder config to Symfony parameters, and (c) supplies a Flysystem-backed adapter so uploads/thumbnails land on S3, GCS, or a custom adapter instead of public/uploads. That shim is the transferable asset, and it is on the order of 200–400 LOC of glue.

Integration feasibility: rewrite, don't integrate. For a Laravel target, the equivalent work is a small adapter implementing CKFinder's Backend interface against Illuminate\Filesystem\FilesystemAdapter / League\Flysystem\Filesystem. This is a well-bounded sprint task, not a vendor evaluation.

Technical risk (ranked):

Risk Severity Note
Flysystem version drift High Bundle targets Flysystem 2; Laravel 9+ ships Flysystem 3. listContents() return types, adapter move/copy, and path-prefix semantics changed. Even copy-pasting the adapter source requires porting.
Abandonment High Repository is archived. No upstream patches, no security response, no PHP 8.4/Symfony 7 roadmap.
License ambiguity High NOASSERTION. CKFinder itself is commercial (CKSource, GPL/commercial dual). An unlicensed wrapper around a proprietary connector is legal-review territory, not a PM call.
Adoption signal Medium 5 stars, 0 dependents. Effectively zero production validation — no community to lean on when the adapter misbehaves.
Bus factor Medium Single maintainer, now inactive.

Key questions to resolve before any decision:

  1. Is there an actual Symfony 5/6 application in the estate, or is "Laravel/PHP" shorthand for a mixed portfolio? If pure Laravel, this package is out of scope by definition.
  2. Do we have a CKFinder commercial license, and does our license permit the connector to be driven by a third-party adapter? Confirm with legal, not with the composer metadata.
  3. What is the real requirement — rich file browsing UI, or just uploads-to-S3? If the latter, CKFinder is over-scoped and Laravel's Storage + a simple uploader removes the dependency entirely.
  4. Who owns the code if we fork it, and is the ~300 LOC glue worth forking versus reimplementing clean?

Integration Approach

Stack fit. Zero native fit for Laravel. Two viable framings:

  • Mixed estate (Symfony + Laravel): pin the bundle only inside the Symfony service, on Symfony 5/6 with Flysystem 2, and accept that it is frozen. Isolate it as a legacy component and budget for a Symfony 7 migration that this package cannot follow.
  • Pure Laravel: treat the repo as documentation. Extract the Flysystem↔CKFinder adapter pattern, rewrite against Flysystem 3 and Laravel's Storage facade, and own the result.

Migration / build path (Laravel, recommended):

  1. Create app/CKFinder/FlysystemBackend.php implementing CKSource's Backend interface, delegating to a League\Flysystem\Filesystem instance obtained via Storage::disk($name)->getDriver().
  2. Register CKFinder's connector config in config/ckfinder.php; resolve the backend through a Laravel service provider binding rather than Symfony DI.
  3. Handle the Flysystem 2→3 deltas explicitly: DirectoryListing iteration, Visibility enum, adapter-level move/copy (S3 copy+delete vs. native move), and path prefixing so CKFinder's resourceType directories map cleanly to disk roots.
  4. Point the CKFinder frontend at the connector route; do not reuse the bundle's Symfony route definitions.

Compatibility notes. PHP 8.x is fine on both sides. Composer-wise the bundle's symfony/* constraints won't conflict with Laravel's own requirements (Laravel permits Symfony 6/7 components), so it will install — which is precisely the trap. It will install and do nothing.

Sequencing. (1) Legal check on CKFinder licensing and the NOASSERTION status — blocking gate. (2) Two-day spike: prototype the adapter against the target Laravel version and a real S3 bucket. (3) Build-vs-buy review: compare against Laravel-native file managers or dropping the rich UI requirement. (4) Implement behind a feature flag with contract tests covering upload, rename, delete, thumbnail generation, and folder traversal. (5) Decommission any Symfony-era config.

Do not attempt a Symfony-bundle-on-Laravel bridge (e.g., loading the bundle through a third-party Symfony-in-Laravel adapter). The glue cost exceeds the rewrite cost and couples you to an archived repo.

Operational Impact

Maintenance. Archived means fork-and-own. Any fork inherits Flysystem 2 pinning, Symfony 5 conventions, and no security patch channel. Budget ongoing ownership: roughly the cost of a small internal library, plus the tax of tracking CKFinder connector changes on your own. Expect a forced rewrite at the next Flysystem or PHP major.

Support. Community support is nonexistent (5 stars, 0 dependents, single inactive maintainer). CKSource's commercial support covers CKFinder and its connector — it will not cover a third-party Flysystem adapter, and CKSource support will likely decline to debug a backend it didn't ship. Internal on-call owns this end to end.

Scaling. The CKFinder connector is synchronous per-request PHP, which is fine for admin-panel traffic and inappropriate for bulk ingest. Two specific pressures:

  • Thumbnails are generated inline and cached. Local-disk thumbnail caches break on autoscaled/ephemeral containers — must be redirected to shared storage, or every pod regenerates them.
  • S3 latency per file listing is higher than local disk; large directory trees will show measurable UI lag. Consider CKFinder's pagination settings rather than adding caching layers.

Failure modes to instrument:

  • Adapter path-normalization bugs silently writing outside the intended prefix (data-integrity and, if the bucket is shared, cross-tenant leak).
  • ACL divergence: CKFinder has its own ACL config layered on top of its own session/auth assumptions. It does not read Laravel Gate/Policy. Any authorization enforced only in Laravel middleware is bypassable through the connector route — this is the highest-severity operational risk and needs explicit route-level guards plus tests.
  • Flysystem 3 adapter exceptions surfacing as raw 500s in the file browser rather than user-facing errors.
  • Ephemeral thumbnail cache thrash under autoscaling.
  • License exposure if the connector is bundled into a distributed artifact.

Ramp-up. Low for anyone who already knows CKFinder's connector config; low-to-moderate for a Laravel developer building the adapter (the CKSource Backend interface is small and documented). Ramp-up cost on the bundle itself is wasted effort for a Laravel team — deliberately cap investigation time at the spike.

Verdict for a TPM. Do not adopt as a dependency. Value it as a ~1-week reference for building a Laravel-native CKFinder backend, gated on a licensing review that the NOASSERTION metadata cannot answer. If the estate is genuinely Symfony-only, the archived status still forces a fork-and-own decision that should be made deliberately rather than by inaction.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels