सार्वजनिक वेब एप्लिकेशन कॉन्फ़िगरेशन के लिए ini फ़ाइलों का उपयोग क्यों नहीं करते हैं


10

लगभग हर सार्वजनिक CMS डेटाबेस सेटिंग्स और इतने पर .php कॉन्फ़िगरेशन फ़ाइल का उपयोग करता है। उदाहरण के लिए जब आप इसे स्थापित करते हैं तो वर्डप्रेस स्वचालित रूप से एक .php कॉन्फिग फाइल बनाता है।

वे सिर्फ .ini फ़ाइल का उपयोग क्यों नहीं करते? PHP में पहले से ही parse_ini_file () है और मुझे यकीन है कि अन्य भाषाओं में समान कार्य हैं।

जवाबों:


9

PHP के साथ विशेष रूप से; .ini फ़ाइल और .conf.php फ़ाइल के बीच का अंतर नगण्य है।

कॉन्फ़िगरेशन के लिए सीधे PHP का उपयोग करने से कॉन्फ़िगरेशन के लिए एक अच्छी तरह से परिभाषित, पोर्टेबल सिंटैक्स से संबंधित केवल आवश्यकता का अलग-अलग लाभ होता है, और यह तथ्य कि कॉन्फ़िगरेशन फ़ाइल ठीक से कोड कभी-कभी उपयोगी होती है।

उसकी तुलना में; एक ini फ़ाइल की पेशकश करने के लिए कुछ भी नहीं है; और include, requireऔर require_onceसभी अच्छी तरह से जानते हैं और (ज्यादातर) अच्छी तरह से समझ रहे हैं।


relate to one well-defined, portable syntax for configurationमुझे वह नहीं मिला। ini फ़ाइलों में एक अच्छी तरह से परिभाषित और पोर्टेबल सिंटैक्स है। प्रत्येक .conf.phpफ़ाइल की अपनी संरचना होती है, अधिकांश सरणी आधारित होती हैं, लेकिन यह एक आईएनआई फ़ाइल से अलग नहीं होती है।
यानिस

7
यह भी ध्यान दें कि एक PHP फ़ाइल कुछ बुनियादी सुरक्षा दे सकती है। यदि जूमला ने एक्सएमएल या .iniफाइलों को कॉन्फ़िगरेशन के भंडारण के लिए उपयोग किया है, तो इसमें कोई संदेह नहीं होगा कि कॉन्फ़िगरेशन गलत तरीके से चल रहा है, जहां कॉन्फ़िगरेशन सार्वजनिक रूप से सुलभ था, जो आमतौर पर अच्छी बात नहीं है। PHP फ़ाइलों के साथ, यह एक आगंतुक के लिए एक सर्वर को गलत तरीके से सेवा करने के लिए गलत होने के लिए बहुत, बहुत दुर्लभ होने जा रहा है।
टॉम मार्थेनल

4

आम तौर पर बोलना मुझे पसंद है .iniया XML विन्यास फाइल। बड़ी प्रणालियों में, अक्सर डेवलपर के अलावा किसी अन्य व्यक्ति को कॉन्फ़िगरेशन मान को बदलने की आवश्यकता होगी, संभवतः एक डीबीए या एक sysadmin। अधिकांश DBA और sysadmins मुझे पता है कि किसी भी समस्या को सरल 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'
));    

ए हार्डकोड करने के बजाय default_cache_config, मैं सिस्टम अस्थायी पास कर रहा हूं, और वह हर उस प्रणाली में काम करेगा जिसे मैं स्क्रिप्ट तैनात करता हूं। यह स्क्रिप्ट अवधारणा का एक छोटा सा प्रमाण है जिसे लगभग 10 डेवलपर्स को पारित किया जाएगा, और मैं चाहता हूं कि वे इसे वैसे ही चलाएं, जैसा कि सोचने के लिए बहुत कुछ है। यदि प्रोटोटाइप विकसित होता है, तो मैं इसे अपने एक्सएमएल कॉन्फ़िगरेशन क्लास (और जाहिर तौर पर फाइलसिस्टम कैश पर भरोसा नहीं करूंगा) के साथ इसे सख्त कर दूंगा।


"वहाँ एक छोटी सी गलती काफी तरीकों से पूरे आवेदन को नुकसान पहुंचा सकती है।" हालांकि ini के लिए अमान्य मान नहीं होगा? या कि एक्सएमएल कोई मित्रवत है?
4

@whatsisname आमतौर पर यदि गलत तरीके से सेट किया गया कॉन्फ़िगरेशन मान आपके सिस्टम को ब्रेक करता है, तो आपकी समस्याएं कहीं और हैं। मुझे लगता है कि स्क्रिप्ट में कोड का एक अनजाने टुकड़ा अधिक चरम, कुछ ऐसा कर रहा था, जिसे मैंने एक से अधिक बार अनुभव किया था। यह ini / xml फ़ाइल के साथ असंभव है, मुख्य बिंदु यह है कि एक स्क्रिप्ट कॉन्फिग कुछ ऐसा नहीं है जिसे आप गैर डेवलपर्स के साथ साझा करना चाहते हैं।
यानि

3

इसका उत्तर सरल है: एक conf.php के पास काम करने के लिए मूल रूप से शून्य काम है। यह सिर्फ एक और स्रोत फ़ाइल है।


0

कैशिंग के बिना गति भी कारण हो सकता है। जरूरत पड़ने पर PHP कॉन्फिग को पारदर्शी तरीके से ओपकोड किया जा सकता है। जबकि INI फ़ाइल को हर बार पढ़ने के बाद टेक्स्ट-पार्स करने की आवश्यकता होती है और आपको स्वयं कैश बनाने की आवश्यकता होती है। छोटी फ़ाइलों के लिए यह ठीक है, लेकिन हर अनुरोध पर सैकड़ों पंक्तियों के साथ यह दसियों मील तक बढ़ सकता है, जो कि 200ms अनुकूलित वेब के लिए काफी है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.