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

Roxyfileman Bundle Laravel Package

elendev/roxyfileman-bundle

Symfony2 bundle that integrates Roxyfileman file manager and works with IvoryCKEditorBundle. Provides configurable local filesystem paths/URLs, multiple profiles, custom filesystem services, and route import.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — poor. Despite the "Laravel/PHP package" framing, this is a Symfony 2 bundle, not a Laravel package. It ships an AppKernel-registered bundle, YAML route imports, and Symfony DI service definitions for a filesystem abstraction. There is no service provider, no config/*.php, no facade, no publishable assets. Dropping it into a Laravel application is not a configuration exercise — it requires booting Symfony's container or rewriting the integration layer. The bundle itself is thin: its real value is (a) config-driven mapping of RoxyFileman's file paths to a host directory, (b) a swappable filesystem service, (c) multi-profile config, and (d) route registration. That is perhaps 300–600 lines of glue. We would be adopting a package for the glue, not the product.

Integration feasibility — feasible only as a reference implementation or a fork. RoxyFileman itself is a standalone PHP file-manager distribution (its own JS frontend, its own PHP backend, its own license and release cadence) that lives outside Composer. This bundle wraps it. Two realistic paths:

  1. Fork-and-port: reimplement the bundle's glue as a Laravel package — service provider, config/roxyfileman.php with profiles, routes behind auth/can middleware, and a Storage-backed adapter replacing the Symfony filesystem service. Estimated 1–2 sprints including tests; low technical complexity, entirely in our control afterwards.
  2. Replace: adopt a maintained Laravel-native media/file-manager package or Spatie Media Library + an upload UI. Likely cheaper than porting, and avoids the RoxyFileman frontend entirely.

Technical risk — high, and concentrated in one place. The package is unmaintained (last release 2018-03-11), has 3 stars and 0 dependents — a near-zero adoption signal, meaning no community to surface bugs or regressions. It targets Symfony 2/3 and will not run on PHP 8.x without work; the linked IvoryCKEditorBundle is likewise abandoned. Critically, the primary function is an authenticated-ish upload endpoint that writes files to disk. PHP file managers as a class have a long history of unrestricted-upload, extension-bypass, and path-traversal findings; this must be treated as an untrusted component until independently reviewed. The bundle's MIT license does not extend to the RoxyFileman distribution it bundles — that is a separate license we must verify for redistribution. Also note the README's own guidance: add the route prefix to your firewall. That is a security control delegated to the integrator, not provided by the package.

Key questions for the business:

  • What is the actual requirement — WYSIWYG image insertion, or a general-purpose file manager? A narrow "upload + browse + insert" need is served better by a 200-line Laravel controller than by this dependency.
  • Who owns the security review and ongoing patch responsibility if we fork? An unmaintained upload endpoint becomes our CVE surface, not a vendor's.
  • Are we standardizing on object storage (S3) or local disk? The Symfony filesystem abstraction here predates Flysystem-era Laravel disks; if we need S3, the port is a rewrite, not an adapter.
  • Does the product need multi-profile/two file roots, or is that feature carry-over?
  • What is the exit cost if this is abandoned mid-project? (Answer: low for the glue, high if RoxyFileman's frontend is embedded in user workflows.)

Verdict: Do not adopt as a dependency. Use it as a design reference at most.

Integration Approach

Stack fit. None out of the box. Target stack (Laravel 10/11, PHP 8.2+, Composer-only dependencies, CI with static analysis and dependency scanning) is incompatible with a 2018 Symfony 2 bundle. Symfony's bundle contract, AppKernel registration, and YAML routing have no Laravel analogue. The RoxyFileman payload is a zip-style distribution, not a Composer package — that alone breaks our supply-chain controls (no lockfile pinning, no composer audit, no provenance).

Migration path. If leadership wants the capability, sequence it as a port, not an install:

  1. Week 1 — capability spike. Stand up RoxyFileman standalone in a throwaway container against a local disk. Validate the editor integration (CKEditor/TinyMCE or whichever the product uses) and the upload/browse UX. Decide whether the frontend is worth keeping at all.
  2. Week 1 — security gate. Threat-model the upload endpoint: allowed extensions, MIME sniffing, filename normalization, traversal, symlink escape, execution prevention on the storage path, size and rate limits. If it cannot pass, stop. This is the only genuinely hard part of the project.
  3. Week 2–3 — port the glue. Laravel service provider; config/roxyfileman.php with profiles keyed by name (preserving the bundle's multi-profile idea); routes under auth + a policy/ability check + throttle; a FilesystemAdapter-backed driver so local and S3 behave identically.
  4. Week 3–4 — swap or bury the frontend. Either keep RoxyFileman's assets under public/vendor with a pinned version recorded in the repo, or replace with a modern uploader. Replacing is strongly preferred for CSP, maintenance, and accessibility reasons.
  5. Week 4 — hardening and handover. Tests for traversal and extension bypass, an upload-specific audit log, ops runbook, and an explicit "this is ours now" ownership note in the service catalog.

Compatibility. Symfony 2/3 + PHP 5.6/7.x assumptions; IvoryCKEditorBundle is dead; no PHP 8 support, so even a partial reuse of the bundle's own classes is likely to fail on modern syntax/deprecation checks. Treat the source as pseudocode.

Sequencing note for the TPM: the build-vs-buy decision should be made before the security gate, because a from-scratch controller that only does "upload image, return URL" eliminates ~80% of the risk surface described above. If the requirement is really just "let editors put images in articles," porting this bundle is over-engineering.

Operational Impact

Maintenance. Effectively zero upstream. Last release 2018, 3 stars, 0 dependents, single maintainer — assume abandonment. Every future PHP upgrade, framework upgrade, and security advisory becomes our work. If we fork, we own it permanently: budget a recurring line item (roughly a few days per quarter) for dependency bumps and review, plus a named owner. If we don't fork, we still own the vendored RoxyFileman payload, which is the larger and more volatile half.

Support. No vendor, no SLA, no issue triage. Internal support only, with engineers reverse-engineering a decade-old Symfony bundle. Expect slow incident diagnosis because nobody on the team will have prior exposure to this code.

Scaling. The file manager brokers I/O through PHP on every browse and upload; it does not stream from object storage natively. At any real volume this becomes an application-tier bottleneck and a bandwidth cost center. Correct architecture is direct-to-storage uploads (presigned URLs) with the app only issuing credentials and recording metadata — which is a rewrite of the package's core behavior, not a tuning exercise. Also plan for CDN-fronted delivery of stored assets; serving images through the PHP process will not hold.

Failure modes to design against now:

  • Arbitrary code execution via uploaded .php/.phtml/.htaccess landing in a web-served directory; enforce non-executable storage paths and extension allowlists server-side.
  • Path traversal / symlink escape from the configured profile root into application code or config.
  • Unrestricted upload by any authenticated (or, per the README's warning, unauthenticated-if-firewall-misconfigured) user; the firewall hint shifts a security control onto ops with no fail-safe default.
  • Silent misconfiguration of profile roots — wrong absolute path writes user files outside the intended tree, and there is no validation.
  • Orphaned files — no reference tracking between uploaded assets and the content that references them; deletions leak storage indefinitely.
  • Supply-chain drift — the RoxyFileman payload is updated by hand with no version pinning, so environments can diverge invisibly.
  • Upgrade dead-end — the moment the host app moves to PHP 8.x or off Symfony 2, this component blocks the migration.

Ramp-up. Learning the bundle is trivial (a day — it is a small amount of glue). Learning the failure surface is not: expect one to two weeks of security-focused engineering before anyone should be comfortable putting this near production traffic. The RoxyFileman frontend is legacy JavaScript with no modern toolchain, so frontend engineers will be slow in it and will not want to touch it.

Recommendation. Score and adoption signals (3 stars, 0 dependents, 8-year-old release) say this is a dead artifact. Treat it as a pattern reference: extract the multi-profile config and filesystem-abstraction ideas, implement them in ~1–2 sprints inside Laravel behind proper authorization and storage disks, and avoid inheriting an unmaintained upload endpoint and an unversioned third-party file-manager payload. If the product genuinely needs a full-featured file manager, evaluate a maintained Laravel-native alternative before committing engineering time to resurrection.

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.
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
adachsoft/php-code-style