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

Directory Lister Laravel Package

phlak/directory-lister

PHLAK DirectoryLister is a lightweight, standalone PHP directory listing tool that turns folders into browsable indexes. It offers sorting, search, breadcrumbs, file icons, and customizable templates with no database required.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

  • Architecture fit: 5.8.0 reinforces that this is the standalone Directory Lister application, not a Laravel package. The release references constant-style configuration (DIRECT_LINKS, ZIP_DOWNLOADS, ZIP_COMPRESS, HIDE_VCS_FILES), a bundled front controller, and README rendering — all hallmarks of an opinionated standalone app. There is still no service provider, facade, config publishing, route registration, storage-disk abstraction, or Laravel auth integration. It fits best as an isolated utility/sidecar behind an auth gateway, not as an embedded component of a Laravel domain application.
  • Integration feasibility: Unchanged in substance — integration remains custom work (reverse proxy in front of a standalone instance, or a Laravel controller wrapper around package internals). The release does not add any Laravel-facing surface area. The one improvement is diagnosability: documentation now lives in-repo under /docs, which shortens the spike and reduces reliance on external docs for config semantics. The 0 dependent count still means no proven Laravel integration patterns; a time-boxed spike remains mandatory.
  • Technical risk: Remains high — this is a security-sensitive feature and 5.8.0 shipped two security fixes, both of which validate the risks already flagged: (1) hidden file/directory checks were bypassable using non-canonical paths containing . or .. segments, and (2) direct-linked content was accessible via query-string parameters from outside the direct-linked path. Both are exactly the path-traversal/authorization-bypass class of defect called out previously. Important implication: any prior version is exposed, so this release is effectively a mandatory patch floor, not an optional upgrade. The presence of these CVEs also confirms that the package's authz model is enforced in application code rather than delegated to a hardened server layer, so defense-in-depth (web-server rules, gateway authz) is still required. MIT license keeps legal risk low. Traction (2.5k stars) still does not imply enterprise readiness.
  • Key questions: Now partially answered: it is the standalone app, configured via constants/PHP config, with its own front controller and ZIP subsystem. Remaining: which PHP and Laravel-adjacent versions are supported (dependencies were refreshed, but confirm 8.2/8.3 explicitly)? What auth model does it assume beyond path-based hiding? Can it use Laravel storage disks or only local web-accessible paths? Are views/config/assets overridable? Is there a published CVE/advisory process, and will the two 5.8.0 fixes get advisories? Does it paginate large directories? Is there an API? Is it multi-tenant safe? What is the real release cadence? How does DIRECT_LINKS interact with the query-string authorization model — is direct-linking now a supported authorization boundary or purely a UX affordance?

Integration Approach

  • Stack fit: PHP-compatible; Laravel fit remains adapter-level only. Do not assume first-class Laravel support. Prefer isolation over deep embedding for an initial release.
  • Migration path: Start with a non-production spike against a read-only sample directory. Prove auth/SSO, path restrictions, storage layout, theming, and web-server config. Then choose: (A) standalone subdomain behind an auth proxy — lowest effort and best isolation; (B) Laravel route/controller wrapper — medium effort, tighter UX, more coupling; (C) fork/refactor into a Laravel package with service provider, config, routes, views, and storage adapter — highest effort, best long-term fit. New consideration: if DIRECT_LINKS is used, treat it as an authorization decision and route it through the same policy layer as everything else — the 5.8.0 fix shows this boundary has been gotten wrong once already.
  • Compatibility: Verify PHP 8.2/8.3, Laravel 10/11/12, Composer dependency constraints (note: PHP and JS dependencies, dev tooling, and GitHub Actions were all bumped in this release — re-run the compatibility matrix rather than assuming the prior result holds), template engine assumptions, asset publishing, and whether it expects document-root exposure or .htaccess/nginx rules. Confirm it can run without exposing application source or sensitive directories. Also verify the ZIP download path still works under your PHP build, since two ZIP defects were just fixed.
  • Sequencing: 1) Confirm use case and security requirements; 2) pin to 5.8.0 or later as the minimum acceptable version and confirm no environment is on an earlier build; 3) spike install and basic browse; 4) integrate auth/SSO and authorization policy; 5) constrain root paths and symlink behavior; 6) theme/UX alignment; 7) security-test traversal (including ./.. variants and URL-encoded forms), symlink, XSS, direct-link query-string bypass, and authz; 8) validate ZIP download completeness and ZIP_DOWNLOADS/ZIP_COMPRESS off-switches actually disable; 9) load-test large directories; 10) deploy isolated or packaged; 11) add monitoring and runbooks.

Operational Impact

  • Maintenance: External OSS with community maintenance. Assign an internal owner, track upstream releases/CVEs, and budget for a fork if embedded. This release argues for a mandatory patch SLA: two authorization-bypass fixes in one minor version means "upgrade when convenient" is not a defensible posture for a file-disclosure surface. In-repo /docs slightly reduces maintenance drag. MIT is permissive, but abandonware risk remains.
  • Support: Likely community-only via GitHub. Internal runbooks and escalation paths are required; do not assume vendor SLA. Note that security fixes arrived via community pull requests (#1550, #1551, #1549 credited to one contributor), which is a positive maintenance signal but also confirms support depth is thin.
  • Scaling: Directory listing is I/O- and rendering-heavy. Large directories need pagination, caching, throttling, and possibly a CDN for static assets. Horizontal scaling requires stateless app instances and consistent shared storage. An auth proxy/gateway must scale with it. ZIP compression is CPU- and memory-intensive — the fixed-but-previously-broken ZIP path should be load-tested, not just smoke-tested.
  • Failure modes: Path traversal or symlink escape (demonstrated in the wild via ./..); unauthorized file disclosure; direct-link/query-string authorization bypass; hidden-file filtering bypass (including the fixed HIDE_VCS_FILES typo — prior configs may have been silently leaking .git, .env, etc.); XSS via crafted filenames; DoS from very large directories or ZIP compression; incomplete ZIP archives; broken symlinks; web-server misconfiguration exposing files; stale cache; dependency CVEs; auth/session mismatch between Laravel and the lister. Treat any pre-5.8.0 deployment as potentially already compromised in terms of exposure — audit logs and access history.
  • Ramp-up: Low for standalone browsing, medium for secure Laravel-side integration, high for a fork/refactor. The team needs PHP, Laravel, web-server security, and auth/authorization experience. The new DIRECT_LINKS and README-rendering behavior add a small amount of config surface to learn. Proceed only with a security review and an isolated deployment boundary.
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.
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle