Pourquoi les applications Web publiques n'utilisent-elles pas les fichiers INI pour la configuration

10

Presque tous les CMS publics utilisent un fichier de configuration .php pour les paramètres de la base de données, etc. Par exemple, WordPress crée automatiquement un fichier de configuration .php lorsque vous l'installez.

Pourquoi n'utilisent-ils pas simplement un fichier .ini? PHP a déjà parse_ini_file () et je suis sûr que d'autres langages ont des fonctions similaires.

thelolcat
la source

Réponses:

9

Avec PHP en particulier; la différence entre un fichier .ini et un fichier .conf.php est négligeable.

L'utilisation directe de PHP pour la configuration présente l'avantage distinct de n'avoir à se rapporter qu'à une syntaxe portable bien définie pour la configuration, et le fait que le fichier de configuration soit correctement codé est parfois utile.

Par rapport à cela; un fichier ini a peu ou rien à offrir; et include, requireet require_oncesont tous bien connus et (surtout) bien compris.

Williham Totland
la source
relate to one well-defined, portable syntax for configurationJe comprends pas. Les fichiers ini ont également une syntaxe bien définie et portable. Chaque .conf.phpfichier a sa propre structure, la plupart sont basés sur des tableaux, mais ce n'est pas si différent d'un fichier ini.
yannis
7
Notez également qu'un fichier PHP peut donner une sécurité de base. Si Joomla utilisait du XML ou des .inifichiers pour stocker la configuration, il y aurait sans aucun doute de nombreuses instances mal configurées fonctionnant où la configuration était accessible au public, ce qui n'est généralement pas une bonne chose. Avec les fichiers PHP, il sera très, très rare qu'un serveur soit mal configuré pour servir le contenu de celui-ci à un visiteur.
Tom Marthenal
4

De manière générale, je préfère .iniles fichiers de configuration XML. Dans les systèmes plus importants, une personne autre que le développeur devra souvent modifier une valeur de configuration, éventuellement un DBA ou un administrateur système. La plupart des administrateurs de base de données et des administrateurs système que je connais n'auraient aucun problème à naviguer dans un simple script PHP, mais je préférerais qu'ils ne le fassent pas. Une petite erreur peut endommager l'ensemble de l'application de plusieurs manières.

Mais dans les petits systèmes, il est extrêmement pratique d'utiliser des scripts PHP pour la configuration. Je jouais avec le kit SDK AWS aujourd'hui, qui utilise également un script PHP pour la configuration:

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

Au lieu de coder en dur un default_cache_config, je passe le temp du système, et cela fonctionnerait dans chaque système sur lequel je déploie le script. Ce script est une petite preuve de concept qui sera transmise à une dizaine de développeurs, et je veux qu'ils s'exécutent tel quel, sans avoir à réfléchir. Si le prototype évolue, je le câblerai avec ma classe de configuration XML (et ne compterai évidemment pas sur le cache du système de fichiers).

yannis
la source
"Une petite erreur peut endommager l'ensemble de l'application de plusieurs manières." Comme si des valeurs invalides pour ini ne le seraient pas? Ou que XML est plus convivial?
whatsisname
@whatsisname En général, si une valeur de configuration mal définie freine votre système, vos problèmes sont ailleurs. Je pensais plutôt à un morceau de code involontaire dans la configuration du script faisant quelque chose d'extrême, quelque chose que j'ai vécu plus d'une fois. C'est impossible avec un fichier ini / xml, le point principal étant qu'une configuration de script n'est pas quelque chose que vous voudriez partager avec des non développeurs.
yannis
3

La réponse est simple: un conf.php n'a pratiquement aucun travail requis pour fonctionner. C'est juste un autre fichier source.

comment s'appelle-t-il
la source
0

La vitesse sans mise en cache peut également être la raison. La configuration PHP peut être mise en cache opcode de manière transparente si nécessaire. Alors que le fichier INI doit être analysé à chaque fois qu'il est lu et que vous devez créer le cache vous-même. Pour les petits fichiers, c'est correct, mais avec des centaines de lignes analysées à chaque demande, cela peut augmenter à des dizaines de millisecondes, ce qui est beaucoup pour un site Web optimisé à 200 ms.

Tomáš Fejfar
la source