डिफ़ॉल्ट रूप से लार्वा मानता है कि आप अलग-अलग वातावरण के लिए अलग-अलग कॉन्फ़िगरेशन रखना चाहेंगे। उदा. एक परीक्षण वातावरण में, हो सकता है कि आप एक अलग उपयोगकर्ता नाम और पासवर्ड और उत्पादन वातावरण में भिन्न होना चाहें। चूंकि लार्वेल में बहुत सारी कॉन्फ़िगरेशन फ़ाइलें हैं, इसलिए उन सभी को प्रबंधित करने के लिए यह जल्दी से एक दुःस्वप्न बन जाता है। इसलिए लार्वा PHP के पर्यावरण चर का उपयोग करता है।
मूल रूप से जो कहा गया है वह यह है कि यदि आप "पर्यावरण" चर का उपयोग करना चाहते हैं, जो लार्वा डिफ़ॉल्ट रूप से उपयोग करता है, तो आपको अपने सभी कॉन्फ़िगरेशन को env()
में रखना होगा। विधि जैसा कि पहले ही उल्लेख किया गया है।
यदि आप ऐसा नहीं करना चाहते हैं, उदा। सरल परियोजनाओं के लिए, बस इस तरह अपने कोड से env हटा दें।
'mysql' => [
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'laravel',
'username' => 'root',
'password' => 'password',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
ध्यान दें कि आप मिक्स एंड मैच कर सकते हैं। यानी आपके पास env में कुछ वैरिएबल और कुछ स्टैंड-अलोन हो सकते हैं।
तो env
का उपयोग क्यों करें बिल्कुल?
मान लें कि आपके आवेदन में 100 परीक्षक हैं जो सभी अलग-अलग स्थानों पर रखे गए हैं। लार्वा में आपको लगभग 8-10 कॉन्फ़िगरेशन फ़ाइलों को कोड करना होगा। इसके अलावा आपको version-control
. की आवश्यकता है वो फाइलें। तो आपके सामने दो समस्याएं हैं:
- आप सभी 100 उपयोगकर्ताओं को समान क्रेडेंशियल नहीं भेजना चाहते हैं। इसके अलावा, वे अलग-अलग डेटाबेस, कैश सर्वर आदि का उपयोग कर सकते हैं, जिसका अर्थ है कि उनके पास अलग-अलग कॉन्फ़िगरेशन होंगे। इसलिए प्रत्येक उपयोगकर्ता को उन 8-10 कॉन्फ़िगरेशन फ़ाइलों को हाथ से बनाए रखना होता है।
- आप इन कॉन्फ़िगरेशन फ़ाइलों को संस्करण नियंत्रण में नहीं भेजना चाहते हैं। क्योंकि अगर आप ऐसा करते हैं, तो पूरी दुनिया आपके एपीआई रहस्यों को जान जाएगी और संभवत:इसका फायदा उठाएगी (बस पासवर्ड की तरह)। इसके अलावा यदि आप लार्वा कॉन्फिडेंस फाइलों को देखते हैं, तो आप देखेंगे कि अन्य जानकारी जैसे कि टाइमज़ोन, डिबग प्रॉपर्टी आदि भी हैं जो कि गोपनीय फाइलों में भी हैं, और आप उन्हें वर्जन-कंट्रोल करना चाहते हैं। तो आप ऐसी कॉन्फ़िगरेशन फ़ाइलों को कैसे संस्करण-नियंत्रित करते हैं और फिर भी अपनी संवेदनशील जानकारी छिपाते हैं।
उत्तर है env
चर। लारवेल dotenv
. का उपयोग करता है जिसका दस्तावेज यहां पाया जा सकता है
. मूल रूप से ये वेरिएबल हैं जो .env
. नामक एक फ़ाइल में रहते हैं एक कुंजी-मूल्य जोड़ी में। उदा.
.env फ़ाइल की नमूना सामग्री
APP_DEBUG=false
APP_KEY=ABCDEFGH
...
एक बार जब आप अपनी .env फ़ाइल को इस रूप में परिभाषित कर लेते हैं, तो आप कुंजी का उपयोग करके मान प्राप्त कर सकते हैं जैसे env('APP_DEBUG')
।
तो यह उपर्युक्त समस्या को निम्नलिखित तरीकों से हल करता है:
- आप
.env
रखें अपने आप को फाइल करें। और आप.env.example
. नामक एक अन्य फ़ाइल भी घोषित करते हैं जो मूल फ़ाइल की एक सटीक प्रतिकृति है, इस तथ्य को छोड़कर कि इसमें नमूना मान हैं, न कि आपके संवेदनशील मान। फिर आप इस नई उदाहरण फ़ाइल को सभी को पास करें। वे नमूना डेटा को अपनी संवेदनशील जानकारी से बदल देंगे। - चूंकि आप उदाहरण फ़ाइल को संस्करण-नियंत्रित कर रहे हैं, आप अपनी सभी कॉन्फ़ फ़ाइलों को संस्करण नियंत्रित कर सकते हैं क्योंकि उनमें रहस्य नहीं है। रहस्य .env फाइलों में है। उन सभी गोपनीय फाइलों में ये
env('APP_KEY')
. जैसे मान होते हैं और वास्तविक मान को रन टाइम पर आपकी .env फ़ाइल का उपयोग करके बदल दिया जाता है।