PHP 8.6.0 Beta 3 is available for testing

Yaconf

Introducción

Yet Another Configurations Container (Yaconf) es un contenedor de configuraciones. Analiza los archivos INI cuando PHP se inicia y conserva el resultado en memoria persistente durante todo el ciclo de vida de PHP, de modo que cada recuperación es una rápida búsqueda en una tabla hash, sin E/S de archivos y sin análisis por petición.

Yaconf almacena todas las configuraciones como cadenas internalizadas o arrays inmutables. No están sujetas al conteo de referencias, por lo que recuperar una configuración de Yaconf es, en la práctica, una operación sin copia. Desde Yaconf 1.2.0, todo el árbol de configuración analizado se compacta además en un único bloque contiguo, lo que reduce el consumo de memoria y mejora la localidad de caché.

La configuración analizada reside en memoria persistente compartida por todos los procesos de trabajo de PHP-FPM mediante copia al escribir: mientras un archivo de configuración no cambie, los procesos de trabajo comparten las mismas páginas físicas de memoria sin importar cuántos estén en ejecución.

Yaconf admite secciones y herencia de secciones en los archivos INI. En las compilaciones no ZTS también recarga los archivos automáticamente cuando cambian; en las compilaciones ZTS (seguras para hilos), las configuraciones se cargan al inicio y es necesario reiniciar para tener en cuenta los cambios.

Desde Yaconf 1.2.0, los subdirectorios del directorio configurado se cargan de forma recursiva (hasta 16 niveles de profundidad) y se referencian usando el nombre del directorio como un nivel de clave: por ejemplo, Yaconf::get("users.database.master") lee la clave master del archivo database.ini situado en el subdirectorio users/.

Almacenar las configuraciones sensibles fuera del árbol web también reduce la superficie de ataque. Los archivos de configuración situados bajo la raíz web pueden ser recuperados por un atacante, por ejemplo a través de una vulnerabilidad de divulgación de archivos. Con Yaconf, los archivos .ini pueden colocarse en su lugar en un directorio legible únicamente por root, como /etc/yaconf: el proceso maestro de PHP-FPM carga las configuraciones cuando el servicio arranca, mientras que los procesos de trabajo derivados —que se ejecutan con un usuario sin privilegios y son los que atienden las peticiones web— no necesitan, y no reciben, acceso a ese directorio.

Yaconf requiere PHP 7.0 o superior.

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top