为什么公共Web应用程序不使用ini文件进行配置


10

几乎每个公共CMS都使用.php配置文件进行数据库设置,等等。例如,WordPress在安装时会自动创建一个.php配置文件。

他们为什么不只使用.ini文件?PHP已经具有parse_ini_file(),并且我确定其他语言也具有类似的功能。

Answers:


9

特别是PHP;.ini文件和.conf.php文件之间的差异可以忽略不计。

直接使用PHP进行配置具有明显的优势,即只需要与一种定义良好的可移植语法相关联即可进行配置,并且配置文件正确编码的事实有时很有用。

相比之下;一个ini文件几乎没有提供。并且includerequirerequire_once都是众所周知的,(主要是)很好的理解。


relate to one well-defined, portable syntax for configuration我不明白 ini文件也具有定义明确且可移植的语法。每个.conf.php文件都有其自己的结构,大多数都是基于数组的,但这与ini文件没有什么不同。
yannis

7
另请注意,PHP文件可以提供一些基本的安全性。如果Joomla使用XML或.ini文件来存储配置,那么毫无疑问,在运行中,许多配置错误的实例都可以公开访问配置,这通常不是一件好事。对于PHP文件,服务器被错误配置以将其内容提供给访问者的情况将非常非常少。
汤姆·马瑟纳尔

4

一般来说,我更喜欢.iniXML配置文件。在大型系统中,开发人员以外的其他人通常需要更改配置值,可能是DBA或sysadmin。我知道,大多数DBA和sysadmin管理员在使用简单的PHP脚本时都不会遇到任何问题,但是我更喜欢如果没有的话。那里的一个小错误可能会在很多方面损害整个应用程序。

但是在较小的系统中,使用PHP脚本进行配置非常方便。我今天在玩AWS SDK,它也使用PHP脚本进行配置:

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

而不是对a进行硬编码default_cache_config,我传递了系统临时文件,这将在我部署脚本的每个系统中使用。该脚本是一个小的概念证明,将在10个开发人员中传递,我希望他们按原样运行它,而无需考虑太多。如果原型得以发展,我将使用我的XML配置类对其进行硬连接(并且显然将不依赖于文件系统缓存)。


“那里的一个小错误可能会在很多方面损害整个应用程序。” 好像ini的无效值不是吗?还是那个XML更友好?
whatsisname 2012年

@whatsisname通常,如果错误设置的配置值使您的系统崩溃,那么问题出在其他地方。我更多地考虑了脚本配置中的一段无意的代码,做了一些极端的事情,而我经历了不止一次。使用ini / xml文件是不可能的,主要要点是脚本配置不是您想要与非开发人员共享的。
yannis'2

3

答案很简单:conf.php的运行基本上需要零工作。这只是另一个源文件。


0

没有缓存的速度也是原因。如果需要,可以透明地对PHP config进行操作码缓存。INI文件每次读取时都需要进行文本解析,而您需要自己创建缓存。对于小文件来说,这是可以的,但是对每个请求都可以解析数百行,它可以提高到数十毫秒,对于200毫秒优化的网络而言,这是很多事情。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.