パブリックWebアプリケーションが構成にiniファイルを使用しないのはなぜですか


10

そこにあるほとんどすべてのパブリックCMSは、データベース設定などに.php構成ファイルを使用しています。たとえば、WordPressをインストールすると、.php設定ファイルが自動的に作成されます。

なぜ.iniファイルを使用しないのですか?PHPには既にparse_ini_file()があり、他の言語にも同様の関数があると思います。

回答:


9

特にPHPでは、.iniファイルと.conf.phpファイルの違いはごくわずかです。

PHPを構成に直接使用すると、構成用に1つの明確に定義された移植可能な構文に関連付けるだけでよいという明確な利点があり、構成ファイルが適切にコードであるという事実が役立つ場合があります。

それに比べて; iniファイルにはほとんど何もありません。およびincluderequireそしてrequire_onceすべてがよく知られており、(ほとんど)よく理解されています。


relate to one well-defined, portable syntax for configurationわかりません。iniファイルにも明確に定義された移植可能な構文があります。すべての.conf.phpファイルには独自の構造があり、ほとんどが配列ベースですが、それはiniファイルとそれほど変わりません。
yannis

7
また、PHPファイルは基本的なセキュリティを提供できることに注意してください。Joomlaが.ini設定を保存するためにXMLまたはファイルを使用した場合、設定が一般公開されている場所で実行されている誤って設定されたインスタンスがたくさんあることは間違いありません。PHPファイルでは、サーバーのコンテンツが訪問者に提供されるようにサーバーが誤って設定されることは非常にまれです。
Tom Marthenal、2012

4

一般的に言えば.ini、XML構成ファイルを使用します。大規模なシステムでは、多くの場合、開発者以外の誰か、おそらくDBAまたはsysadminが構成値を変更する必要があります。私が知っているほとんどのDBAとシステム管理者は、単純なPHPスクリプトをナビゲートするのに何の問題もありませんが、そうでない方がいいと思います。小さな間違いが1つでもあると、アプリケーション全体にかなりの数の害が及ぶ可能性があります。

しかし、小規模なシステムでは、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'
));    

をハードコーディングする代わりにdefault_cache_config、システムのtempを渡します。これは、スクリプトを展開するすべてのシステムで機能します。このスクリプトは、10人程度の開発者に渡される小さな概念実証です。私は、何も考えずに、そのまま実行してほしいと思います。プロトタイプが進化した場合、私はそれを私のXML構成クラスにハードワイヤーします(明らかにファイルシステムキャッシュに依存しません)。


「1つの小さな間違いが、アプリケーション全体にかなりの数の害を及ぼす可能性があります。」iniの無効な値はどうでしょうか?または、そのXMLはより親しみやすいですか?
whatsisname

@whatsisname通常、正しく設定されていない構成値がシステムにブレーキをかける場合、問題は別の場所にあります。私は、スクリプトの設定にある意図しないコードの一部を、私が2回以上経験した極端なことをしていると考えていました。これはini / xmlファイルでは不可能です。主なポイントは、スクリプトの構成が開発者以外の人と共有したくないものであることです。
yannis

3

答えは簡単です。conf.phpの動作に必要な作業は基本的にゼロです。これは単なる別のソースファイルです。


0

キャッシュなしの速度も理由になり得ます。PHP設定は、必要に応じて透過的にopcodeキャッシュできます。一方、INIファイルは、読み取られるたびにテキスト解析される必要があり、キャッシュを自分で作成する必要があります。小さなファイルの場合は問題ありませんが、リクエストごとに何百行も解析されるため、200ミリ秒に最適化されたWebの場合、数十ミリ秒に達する可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.