¿Por qué las aplicaciones web públicas no usan archivos ini para la configuración?

10

Casi todos los CMS públicos utilizan un archivo de configuración .php para la configuración de la base de datos, etc. Por ejemplo, WordPress crea automáticamente un archivo de configuración .php cuando lo instala.

¿Por qué no solo usan un archivo .ini? PHP ya tiene parse_ini_file () y estoy seguro de que otros lenguajes tienen funciones similares.

thelolcat
fuente

Respuestas:

9

Con PHP en particular; La diferencia entre un archivo .ini y un archivo .conf.php es insignificante.

El uso de PHP directamente para la configuración tiene la clara ventaja de que solo necesita relacionarse con una sintaxis portátil bien definida para la configuración, y el hecho de que el archivo de configuración sea el código adecuado es ocasionalmente útil.

En comparación con eso; un archivo ini tiene poco o nada que ofrecer; y include, requirey require_onceson todos conocidos y (en su mayoría) bien entendidos.

Williham Totland
fuente
relate to one well-defined, portable syntax for configurationNo entiendo eso. Los archivos ini también tienen una sintaxis portátil y bien definida. Cada .conf.phparchivo tiene su propia estructura, la mayoría se basan en matrices, pero eso no es tan diferente a un archivo ini.
Yannis
77
También tenga en cuenta que un archivo PHP puede proporcionar cierta seguridad básica. Si Joomla usara XML o .iniarchivos para almacenar la configuración, sin duda habría muchas instancias mal configuradas que se ejecutarían donde la configuración fuera de acceso público, lo que generalmente no es algo bueno. Con los archivos PHP, será muy, muy raro que un servidor esté mal configurado para servir el contenido a un visitante.
Tom Marthenal
4

En general, prefiero .inilos archivos de configuración XML. En sistemas más grandes, a menudo alguien que no sea el desarrollador necesitará cambiar un valor de configuración, posiblemente un DBA o un administrador de sistemas. La mayoría de los DBA y administradores de sistemas que conozco no tendrían ningún problema para navegar a través de un simple script PHP, pero preferiría que no lo hicieran. Un pequeño error allí puede dañar toda la aplicación de varias maneras.

Pero en sistemas más pequeños, es extremadamente conveniente usar scripts PHP para la configuración. Hoy estaba jugando con el SDK de AWS , que también usa un script PHP para la configuración:

CFCredentials::set(array(
    'development' => array(
        'key' => 'xxx',
        'secret' => 'xxxx',
        'default_cache_config' => sys_get_temp_dir(),
        'certificate_authority' => true
    ),
    '@default' => 'development'
));    

En lugar de codificar a default_cache_config, estoy pasando la temperatura del sistema, y ​​eso funcionaría en cada sistema que implemente el script. Este script es una pequeña prueba de concepto que se pasará a unos 10 desarrolladores, y quiero que lo ejecuten tal cual, sin tener mucho en qué pensar. Si el prototipo evoluciona, lo conectaré con mi clase de configuración XML (y obviamente no dependeré del caché del sistema de archivos).

Yannis
fuente
"Un pequeño error allí puede dañar toda la aplicación de muchas maneras". Como si los valores no válidos para ini no lo fueran? ¿O ese XML es más amigable?
cuál es
@whatsisname Normalmente, si un valor de configuración configurado incorrectamente frena su sistema, entonces sus problemas están en otra parte. Estaba pensando más en un fragmento de código involuntario en la configuración del script que hacía algo extremo, algo que experimenté más de una vez. Eso es imposible con un archivo ini / xml, el punto principal es que una configuración de script no es algo que quieras compartir con los que no son desarrolladores.
Yannis
3

La respuesta es simple: un conf.php tiene básicamente cero trabajo requerido para que funcione. Es solo otro archivo fuente.

whatsisname
fuente
0

La velocidad sin almacenamiento en caché también puede ser la razón. La configuración de PHP se puede almacenar en caché de código de operación transparente si es necesario. Mientras que el archivo INI debe analizarse cada vez que se lee y debe crear la memoria caché usted mismo. Para archivos pequeños está bien, pero con cientos de líneas analizadas en cada solicitud, puede aumentar a decenas de milisegundos, lo que es bastante para una web optimizada de 200 ms.

Tomáš Fejfar
fuente