Por que os aplicativos Web públicos não usam arquivos ini para configuração

10

Quase todos os CMS públicos por aí usam um arquivo de configuração .php para as configurações do banco de dados e assim por diante. Por exemplo, o WordPress cria automaticamente um arquivo de configuração .php quando você o instala.

Por que eles não usam apenas um arquivo .ini? O PHP já possui parse_ini_file () e tenho certeza que outras linguagens têm funções semelhantes.

thelolcat
fonte

Respostas:

9

Com PHP em particular; a diferença entre um arquivo .ini e um arquivo .conf.php é insignificante.

Usar o PHP diretamente para configuração tem a vantagem distinta de precisar apenas se relacionar com uma sintaxe portátil e bem definida para configuração, e o fato de o arquivo de configuração ser um código adequado é ocasionalmente útil.

Comparado a isso; um arquivo ini tem pouco ou nada a oferecer; e include, requiree require_oncesão todos bem conhecidos e (principalmente) bem compreendidos.

Williham Totland
fonte
relate to one well-defined, portable syntax for configurationEu não entendo isso. Os arquivos ini também possuem uma sintaxe bem definida e portátil. Cada .conf.phparquivo tem sua própria estrutura, a maioria é baseada em array, mas isso não é tão diferente de um arquivo ini.
9132 yannis
7
Observe também que um arquivo PHP pode fornecer segurança básica. Se o Joomla usasse XML ou .iniarquivos para armazenar configuração, sem dúvida haveria muitas instâncias mal configuradas em execução, onde a configuração era acessível ao público, o que geralmente não é uma coisa boa. Com arquivos PHP, será muito, muito raro que um servidor seja configurado incorretamente para servir o conteúdo dele a um visitante.
Tom Marthenal
4

De um modo geral, eu prefiro .iniou arquivos de configuração XML. Em sistemas maiores, geralmente alguém que não seja o desenvolvedor precisará alterar um valor de configuração, possivelmente um DBA ou um administrador de sistema. A maioria dos DBAs e administradores de sistemas que conheço não teria nenhum problema em navegar por um script PHP simples, mas eu preferiria que não. Um pequeno erro pode prejudicar todo o aplicativo de várias maneiras.

Mas em sistemas menores, é extremamente conveniente usar scripts PHP para configuração. Eu estava brincando com o AWS SDK hoje, que também usa um script PHP para configuração:

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

Em vez de codificar a default_cache_config, estou passando a temperatura do sistema, e isso funcionaria em todos os sistemas em que implantei o script. Esse script é uma pequena prova de conceito que será passada em torno de 10 desenvolvedores, e eu quero que eles o executem como estão, sem ter muito o que pensar. Se o protótipo evoluir, eu o conectarei com a minha classe de configuração XML (e obviamente não contarei com o cache do sistema de arquivos).

yannis
fonte
"Um pequeno erro pode prejudicar toda a aplicação de várias maneiras". Como se valores inválidos para ini não fossem? Ou esse XML é mais amigável?
Whatsisname
@whatsisname Normalmente, se um valor de configuração definido incorretamente trava o sistema, seus problemas estão em outro lugar. Eu estava pensando mais em um pedaço de código não intencional na configuração do script, fazendo algo extremo, algo que experimentei mais de uma vez. Isso é impossível com um arquivo ini / xml, o ponto principal é que uma configuração de script não é algo que você gostaria de compartilhar com não desenvolvedores.
yannis
3

A resposta é simples: um conf.php tem basicamente zero trabalho necessário para operar. É apenas outro arquivo de origem.

whatsisname
fonte
0

Velocidade sem cache também pode ser o motivo. A configuração do PHP pode ser armazenada em cache com código de código transparente, se necessário. Considerando que o arquivo INI precisa ser analisado em texto toda vez que é lido e você precisa criar o cache por conta própria. Para arquivos pequenos, tudo bem, mas com centenas de linhas analisadas em cada solicitação, pode aumentar para dezenas de milissegundos, o que é bastante para a otimização da Web de 200ms.

Tomáš Fejfar
fonte