PHPackages                             krma-cl/kcfinder - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. krma-cl/kcfinder

ActiveLibrary

krma-cl/kcfinder
================

A maintained, security-focused continuation of KCFinder for modern production environments

v4.10.0(1mo ago)0230↓66.7%2GPL-3.0-or-laterPHPPHP ^8.2CI passing

Since Jul 15Pushed 1mo agoCompare

[ Source](https://github.com/krma-cl/kcfinder-Resurrected)[ Packagist](https://packagist.org/packages/krma-cl/kcfinder)[ Docs](https://github.com/krma-cl/kcfinder-Resurrected)[ RSS](/packages/krma-cl-kcfinder/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (8)Dependencies (4)Versions (10)Used By (2)

KCFinder Resurrected
====================

[](#kcfinder-resurrected)

> A maintained, security-focused and production-oriented continuation of KCFinder, preserving backward compatibility and lightweight deployment.

[![CI](https://github.com/krma-cl/kcfinder-Resurrected/actions/workflows/ci.yml/badge.svg)](https://github.com/krma-cl/kcfinder-Resurrected/actions/workflows/ci.yml)[![Packagist](https://camo.githubusercontent.com/af44af3dcb821870a0dfd2b260b722b1ac2432b892015c0c7923cb8b455941f0/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6b726d612d636c2f6b6366696e646572)](https://packagist.org/packages/krma-cl/kcfinder)[![PHP](https://camo.githubusercontent.com/55070fd40b56decac3e8b5c72a3d153234b80c6ad9eae1b162062f2645a16dde/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f646570656e64656e63792d762f6b726d612d636c2f6b6366696e6465722f706870)](https://packagist.org/packages/krma-cl/kcfinder)[![License](https://camo.githubusercontent.com/ba6cc23628eb5f3796a60f70e3b441333afd915954a5c38f5a04bbd2babe45ab/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6b726d612d636c2f6b6366696e646572)](doc/LICENSE.GPL)

KCFinder Resurrected es la continuación mantenida del administrador de archivos web creado originalmente por Pavel Tzonkov. El proyecto conserva la instalación sencilla y los flujos conocidos de KCFinder, mientras incorpora compatibilidad con PHP moderno, pruebas automatizadas, mejoras de seguridad y contratos preparados para aplicaciones actuales.

No es un parche temporal del repositorio histórico: es una línea de continuidad con identidad, releases y hoja de ruta propias. Reconocemos y preservamos explícitamente el trabajo original de [`sunhater/kcfinder`](https://github.com/sunhater/kcfinder).

Estado del proyecto
-------------------

[](#estado-del-proyecto)

- Versión estable: `v4.9.0` (preparación); último release publicado: [`v4.8.1`](https://github.com/krma-cl/kcfinder-Resurrected/releases/tag/v4.8.1).
- Paquete Composer: [`krma-cl/kcfinder`](https://packagist.org/packages/krma-cl/kcfinder).
- Compatibilidad mantenida: PHP 8.2, 8.3, 8.4 y 8.5.
- Distribución tradicional mediante ZIP autosuficiente.
- Matriz continua de sintaxis, PHPUnit, PHPStan y validación de artefactos.
- Selector moderno JSON opt-in, sin retirar el selector heredado.
- Adaptadores oficiales, versionados de forma independiente, para Laravel y Symfony.
- Observador operacional optativo para integrar cargas, ediciones, movimientos, renombrados y eliminaciones sin modificar el navegador clásico.

Qué es KCFinder
---------------

[](#qué-es-kcfinder)

KCFinder es un administrador de archivos web de código abierto que puede integrarse con CKEditor, TinyMCE y aplicaciones personalizadas. Permite navegar carpetas, subir y administrar archivos, crear miniaturas, editar imágenes y seleccionar recursos para incorporarlos en otros sistemas.

Características
---------------

[](#características)

- Navegación de carpetas y operaciones AJAX.
- Carga múltiple mediante selector, arrastrar y soltar y fuentes externas.
- Miniaturas, redimensionado, rotación EXIF y marcas de agua.
- Edición de imágenes mediante Filerobot y recorte rápido con Jcrop.
- Descarga de archivos y carpetas como ZIP.
- Copia, movimiento, renombrado y eliminación según permisos configurados.
- Movimiento directo optativo de archivos seleccionados y carpetas mediante arrastre o **Mover a…**, con resolución por lote para sobrescribir, conservar ambos o cancelar cuando existen nombres repetidos.
- Selección simple o múltiple para integraciones personalizadas.
- Respuesta JSON versionada con nombre, ruta, URL, MIME y tamaño.
- Sesiones y protección CSRF.
- Reconocimiento MIME mediante Fileinfo.
- Soporte para múltiples idiomas y temas.
- Tema Bootstrap 5 desacoplado y opcional.
- Interfaz responsiva con panel móvil de carpetas y controles accesibles por teclado.

Interfaz responsiva
-------------------

[](#interfaz-responsiva)

En pantallas menores a 768 píxeles, el árbol de carpetas se transforma en un panel lateral accesible desde el botón **Carpetas**. El panel se cierra al elegir una carpeta, tocar el fondo o presionar `Escape`; además, conserva el foco dentro del panel mientras está abierto y lo devuelve al botón al cerrarse.

El comportamiento forma parte del núcleo y funciona con el tema clásico. Los temas opcionales pueden adaptar su presentación sin sustituir el controlador responsivo ni introducir una dependencia obligatoria en Bootstrap.

Búsqueda de carpetas y archivos
-------------------------------

[](#búsqueda-de-carpetas-y-archivos)

La búsqueda por nombre es optativa y está desactivada de forma predeterminada. Cuando se habilita, filtra el árbol para mostrar las carpetas cuyo nombre coincide o que contienen archivos coincidentes, conservando sus carpetas antecesoras. La ventana de archivos aplica el mismo término dentro de la carpeta activa.

```
'search' => array(
    'enabled' => true,
    'minChars' => 2,
    'maxResults' => 100,
    'maxEntries' => 25000,
    'timeoutMs' => 1500,
    'debounceMs' => 350,
),
```

La búsqueda compara nombres, no el contenido interno de documentos. Sus límites, comportamiento de teclado y consideraciones para bibliotecas grandes se explican en [doc/Search.md](doc/Search.md).

Movimiento por arrastre
-----------------------

[](#movimiento-por-arrastre)

El movimiento directo está desactivado de forma predeterminada. Puede habilitarse sin eliminar el portapapeles ni cambiar los protocolos heredados:

```
'dragMove' => array(
    'enabled' => true,
    'maxItems' => 100,
),
```

La autorización efectiva continúa dependiendo de `access.files.move` y `access.dirs.move`. Consulte [doc/MovingItems.md](doc/MovingItems.md) para conocer la experiencia, validaciones y eventos emitidos al cambiar rutas.

Instalación
-----------

[](#instalación)

### ZIP tradicional

[](#zip-tradicional)

Descargue el ZIP y su suma SHA-256 desde [GitHub Releases](https://github.com/krma-cl/kcfinder-Resurrected/releases). Este canal no requiere Composer, Node.js ni Docker en el servidor.

Las instrucciones completas se encuentran en [doc/Distribution.md](doc/Distribution.md).

### Composer

[](#composer)

```
composer require krma-cl/kcfinder
```

Composer instala el paquete en `vendor/krma-cl/kcfinder` y expone el namespace moderno `KCFinder\` mediante PSR-4. No publique el directorio `vendor` completo como raíz web; para la interfaz independiente utilice el ZIP tradicional o una publicación controlada de recursos.

Componentes oficiales
---------------------

[](#componentes-oficiales)

El núcleo, los adaptadores de frameworks y el tema visual se mantienen como proyectos independientes. Todos son opcionales y tienen su propio ciclo de versiones; instalar uno de ellos no agrega dependencias al núcleo para quienes utilizan KCFinder de manera tradicional.

### Adaptador para Laravel

[](#adaptador-para-laravel)

[`krma-cl/kcfinder-laravel`](https://github.com/krma-cl/kcfinder-laravel) integra KCFinder con Laravel 12 y 13, incluyendo Laravel Storage, autorización mediante Gates, publicación de configuración y eventos del selector moderno.

```
composer require krma-cl/kcfinder-laravel:^1.2
```

El paquete y sus versiones estables están disponibles en [Packagist](https://packagist.org/packages/krma-cl/kcfinder-laravel). Consulte el README del adaptador para publicar su configuración y conectarlo al disco y las reglas de autorización de la aplicación.

### Bundle para Symfony

[](#bundle-para-symfony)

[`krma-cl/kcfinder-symfony-bundle`](https://github.com/krma-cl/kcfinder-symfony-bundle) integra KCFinder con Symfony 7.4 y 8.x mediante servicios, eventos, autorización y almacenamiento Flysystem 3.

```
composer require krma-cl/kcfinder-symfony-bundle:^1.0
```

El bundle y sus versiones estables están disponibles en [Packagist](https://packagist.org/packages/krma-cl/kcfinder-symfony-bundle). Su README contiene la configuración del bundle, los servicios y el adaptador de almacenamiento.

### Tema Bootstrap 5

[](#tema-bootstrap-5)

[`kcfinder-bootstrap5-theme`](https://github.com/krma-cl/kcfinder-bootstrap5-theme) ofrece una interfaz opcional basada en Bootstrap 5 y Bootstrap Icons, sin CDN ni dependencias de ejecución adicionales.

1. Descargue el ZIP desde los [releases del tema](https://github.com/krma-cl/kcfinder-bootstrap5-theme/releases).
2. Copie su directorio `dist/bootstrap5` como `themes/bootstrap5` dentro de KCFinder.
3. Configure el tema:

```
'theme' => 'bootstrap5',
```

La paleta semántica puede personalizarse desde `conf/config.local.php`, sin editar el tema instalado por Composer:

```
$_LOCALS['themeOptions']['bootstrap5']['colors'] = array(
    'primary' => '#0057B8',
    'secondary' => '#667085',
    'success' => '#198754',
    'danger' => '#B42318',
    'warning' => '#F79009',
    'light' => '#F8F9FA',
    'dark' => '#101828',
);
```

Sólo se aceptan esos siete nombres y colores `#RRGGBB`; cualquier valor desconocido o inválido se ignora. Las opciones se aplican únicamente al tema indicado y se conservan al actualizar su paquete.

Después de instalarlo o actualizarlo, elimine `cache/theme_bootstrap5.css` y `cache/theme_bootstrap5.js` si existen para que KCFinder regenere los recursos combinados. El tema clásico continúa incluido y disponible como alternativa.

Selector moderno
----------------

[](#selector-moderno)

El selector estructurado puede entregar un objeto versionado como el siguiente:

```
{
  "name": "DO-20130614.pdf",
  "path": "/01-actos/diario-oficial/2013/DO-20130614.pdf",
  "url": "/storage/transparencia/01-actos/diario-oficial/2013/DO-20130614.pdf",
  "mime": "application/pdf",
  "size": 184320
}
```

La activación es opt-in y mantiene la compatibilidad con callbacks heredados. Los callbacks estructurados y el uso seguro de `postMessage` están documentados en [doc/ModernSelector.md](doc/ModernSelector.md).

Observador de operaciones
-------------------------

[](#observador-de-operaciones)

La versión 4.6 agrega un contrato neutral y optativo que notifica operaciones exitosas del navegador clásico. La implementación predeterminada no realiza ninguna acción, por lo que las instalaciones existentes conservan exactamente su comportamiento.

Los adaptadores pueden observar cargas, ediciones, movimientos, renombrados, eliminaciones y creación de carpetas sin parchear `browser.php`. Consulte [doc/OperationObservers.md](doc/OperationObservers.md) para configurar el contrato y conocer su política tolerante a fallos.

Requisitos
----------

[](#requisitos)

- PHP 8.2 o superior dentro de la matriz mantenida.
- Apache 2.4 como servidor probado oficialmente; otros servidores pueden funcionar con configuración equivalente.
- Fileinfo e Intl.
- GD, Imagick o GraphicsMagick para imágenes y miniaturas.
- mbstring recomendada para nombres Unicode.
- EXIF para orientación automática.
- ZIP para descargas agrupadas.

Seguridad
---------

[](#seguridad)

KCFinder administra uploads y operaciones de sistema de archivos, por lo que debe ejecutarse detrás de autenticación y autorización adecuadas. Revise [SECURITY.md](SECURITY.md) antes de habilitarlo públicamente y utilice el canal privado de GitHub para informar vulnerabilidades.

La configuración segura, CSRF, validación de tipos, rutas y sesiones cuentan con pruebas automatizadas. No se ocultan warnings ni deprecations para conseguir que la suite pase.

Desarrollo
----------

[](#desarrollo)

```
composer install
composer test
```

`composer test` valida sintaxis, ejecuta PHPUnit y analiza el código moderno con PHPStan. El pipeline repite estas verificaciones en PHP 8.2, 8.3, 8.4 y 8.5.

La [revisión periódica de versiones](docs/upstream-version-check.md) permite comprobar nuevas versiones estables de PHP, Laravel, Symfony, Bootstrap y las demás tecnologías principales sin actualizar dependencias automáticamente.

Para construir y verificar localmente los dos formatos de distribución:

```
composer package
php tools/verify-composer-install.php
```

Arquitectura y hoja de ruta
---------------------------

[](#arquitectura-y-hoja-de-ruta)

La dirección del proyecto está documentada en [doc/Architecture.md](doc/Architecture.md). La hoja de ruta conserva un núcleo independiente y contempla:

1. Compatibilidad y pruebas de caracterización.
2. Seguridad y configuración de producción.
3. Servicios y contratos desacoplados.
4. Selector JSON moderno.
5. Composer, Packagist y releases reproducibles.
6. Interfaz responsiva y accesible.
7. Adaptadores oficiales para Laravel y Symfony, publicados en repositorios independientes.
8. Organización optativa mediante movimiento por arrastre, orden visual de carpetas y papelera recuperable.

La propuesta de organización y recuperación se detalla en [doc/FileOrganizationAndTrash.md](doc/FileOrganizationAndTrash.md). La superficie HTTP y los comportamientos heredados protegidos por pruebas se describen en [doc/PublicSurface.md](doc/PublicSurface.md). Las decisiones arquitectónicas relevantes se registran en [`doc/adr`](doc/adr).

Linaje y agradecimientos
------------------------

[](#linaje-y-agradecimientos)

- KCFinder original, creado por [Pavel Tzonkov](https://github.com/sunhater).
- Continuación previa de [DevCrh/KCFinder Resurrected](https://github.com/DevCrh/kcfinder-Resurrected).
- Editor de imágenes [Filerobot Image Editor](https://scaleflex.github.io/filerobot-image-editor/).
- Todas las personas que han contribuido, probado y reportado problemas durante la vida del proyecto.

KCFinder Resurrected mantiene su linaje visible porque la continuidad del software libre se construye sobre el trabajo anterior, no borrándolo.

Mantenimiento y comunidad
-------------------------

[](#mantenimiento-y-comunidad)

KCFinder Resurrected es mantenido por [KRMA](https://krma.cl) junto con su comunidad de usuarios y colaboradores. KRMA aporta desarrollo, coordinación e infraestructura para asegurar la continuidad del proyecto.

Licencias
---------

[](#licencias)

El proyecto continúa disponible bajo:

- GNU General Public License, versión 3 o posterior.
- GNU Lesser General Public License, versión 3 o posterior.

Consulte las licencias completas [GPL](doc/LICENSE.GPL) y [LGPL](doc/LICENSE.LGPL).

###  Health Score

44

—

FairBetter than 90% of packages

Maintenance93

Actively maintained with recent releases

Popularity11

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 51.1% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

8

Last Release

36d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/2a8099dc8803d1ad65fe214703ce45a15640b4282c558e02b6e3d9753baaa53a?d=identicon)[krma-cl](/maintainers/krma-cl)

---

Top Contributors

[![DevCrh](https://avatars.githubusercontent.com/u/132955764?v=4)](https://github.com/DevCrh "DevCrh (48 commits)")[![krma-cl](https://avatars.githubusercontent.com/u/215206686?v=4)](https://github.com/krma-cl "krma-cl (46 commits)")

---

Tags

symfonylaravelfile managerfile-uploaderkcfinder

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/krma-cl-kcfinder/health.svg)

```
[![Health](https://phpackages.com/badges/krma-cl-kcfinder/health.svg)](https://phpackages.com/packages/krma-cl-kcfinder)
```

###  Alternatives

[brexis/laravel-workflow

Integerate Symfony Workflow component into Laravel.

282127.8k](/packages/brexis-laravel-workflow)[hafael/azure-mailer-driver

Supercharge your Laravel or Symfony app with Microsoft Azure Communication Services (ACS)! Effortlessly add email, chat, voice, video, and telephony-over-IP for next-level communication. 🚀

15146.2k](/packages/hafael-azure-mailer-driver)[kunicmarko/graphql-test

GraphQL Test Cases

1359.0k](/packages/kunicmarko-graphql-test)[fab2s/dt0

Immutable DTOs with bidirectional casting. No framework required. 8x faster than the alternative.

102.8k2](/packages/fab2s-dt0)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
