# লারাভেল .env ফাইল কি? কিভাবে এই ফাইল সম্পর্কে ধারনা নিবেন।

লারাভেল ইনস্টল করার পর প্রোজেক্ট ফোল্ডারে .env নামে একটি ফাইল থাকে। .env ফাইল বলতে বুঝায় এনভায়রনমেন্ট ভেরিয়েবল। লারাভেলে একটি এপ্লিকেশন কনফিগার করার জন্য ডিফল্টভাবে কিছু ইনভাইরনমেন্ট ভেরিয়েবল সেট করা থাকে। বিভিন্ন ডিরেক্টরি থেকে এই ভেরিয়েবলগুলো ব্যবহার করা হয়। প্রয়োজন হলে এই ফাইলের মধ্যে নতুন করে কাস্টম ভেরিয়েবলও সেট করা যায়। আজকে ডিফল্ট ভেরিয়বল গুলো সম্পর্কে কিছু আইডিয়া শেয়ার করতে চাই।

**.ENV ফাইলের সুবিধা:**

* এই ফাইলের ভিতরে সকল গুরুত্বপূর্ণ ভেরিয়েবলগুলো এক জায়গায় থাকে। এখান থেকে সহজে ভ্যালুগুলো সেট করে বা পরিবর্তন করে এপ্লিকেশনটি কনফিগার করতে পারবেন। প্রয়োজনে আরো ভেরিয়েবল এই ফাইলে এড করে রাখতে পারবেন কাজের সুবিধার্থে।
    

**ফরম্যাট অফ ভ্যারিয়েবলস:**

* প্রথমে ভেরিয়েবল এর নামগুলো লেখা থাকে। তারপর সমান ( = ) চিহ্ন দিয়ে ভেরিয়েবল এর ভ্যালুগুলো লেখা থাকে। যেমন:
    

`variable_name = value`

* আমরা যেহেতু .env ফাইল অনুযায়ী আলোচনা করছি। তাই .env ফাইল এর ভেতরে প্রথমে আমরা APP সম্পর্কিত কয়েকটি ডিফল্ট ভেরিয়েবল দেখতে পাবো। যেমন:
    

`এপ্লিকেশন নেম (APP_NAME = ),`

`অ্যাপ্লিকেশন ইনভাইরনমেন্ট (APP_ENV = ),`

`অ্যাপ্লিকেশন কি (APP_KEY =,`

`অ্যাপ্লিকেশন ডিবাগিং (APP_DEBUG = ) ,`

`অ্যাপ্লিকেশন ইউআরএল (APP_URL = )`

* এপ্লিকেশন সম্পর্কিত এই ভেরিয়েবলগুলো ব্যবহৃত হয় config ফোল্ডারের ভেতরে app.php ফাইলে। app.php ফাইল ওপেন করলে বিস্তারিত দেখতে পাবেন।
    

**APP\_NAME = Laravel**

* ডিফল্টভাবে অ্যাপ্লিকেশন নেম এর ভ্যালু (Laravel) সেট করা থাকে। এই নাম পরিবর্তন করে আমরা আমাদের এপ্লিকেশন এর নতুন নাম সেট করতে পারি।
    

`APP_ENV =`

* এই ভেরিয়েবল এর কয়েকটি ভ্যালু রয়েছে। যেমন: production, local, development, staging. কনফিগ ফোল্ডারের ভেতর app.php ফাইল ওপেন করলে ডিফল্ট ভ্যালু দেখতে পারবেন। অ্যাপ এনভায়রনমেন্ট production রেখে কাজ করলে এপ্লিকেশনে কোন এরোর থাকলে সেটি দেখা যাবে না। কারন এক্ষেত্রে ডিবাগিং false হিসেবে কাজ করে।
    

`APP_ENV = production`

`APP_DEBUG = false`

আবার

* [Localhost](http://Localhost) এ কাজ করলে এপ্লিকেশনে যদি কোন ইরোর থাকে তাহলে সেগুলো ডিবাগিং এর মাধ্যমে দেখতে পারবেন। সেক্ষেত্রে "ডিবাগিং ট্রু" হিসেবে কাজ করে। আপনি চাইলে পরিবর্তন করতে পারবেন।
    

`APP_ENV = local`

`APP_DEBUG = true`

অ্যাপ্লিকেশন কি (APP\_KEY = )

* এপ্লিকেশন key জেনারেট করা কিন্তু কঠিন নয়। শুধু একটি কোডের মাধ্যমে কি জেনারেট করতে পারবেন। টারমিনাল থেকে প্রজেক্ট ফোল্ডারে গিয়ে লিখবেন
    

`php artisan key:generate`

* লেখার পর দেখবেন অটোমেটিক্যালি key জেনারেট হয়ে APP\_KEY এর ভ্যালু হিসেবে সেট হয়ে যাবে।
    

অ্যাপ্লিকেশন ইউআরএল (APP\_URL = )

* আপনার এপ্লিকেশনটি যে url এ থাকবে, এখানে সেই url সেট করে নিতে হবে। ডিফল্টভাবে APP\_URL এর ভ্যালু [http://localhost](http://localhost) সেট করা থাকে। লাইভ সার্ভারে কাজ করার ক্ষেত্রে এটি চেঞ্জ না করলেও সমস্যা হয় না। তবে কিছু কিছু ক্ষেত্রে সমস্যা হয়। তাই লাইভ সার্ভারের ক্ষেত্রে url চেঞ্জ করে মেইন ডোমেইন অর্থাৎ রুট ডিরেক্টরি সেট করে রাখা ভালো।
    

এবার **ডাটাবেজ** সম্পর্কিত কয়েকটি ভ্যারিয়েবল নিয়ে আলোচনা শেয়ার করি। .env ফাইলের মধ্যে ডাটাবেজ সম্পর্কিত ৬টি ভ্যারিয়েবল ডিফল্টভাবে দেয়া থাকে। একটু কম বেশি হতে পারে। যেমন:

`DB_CONNECTION=mysql`

`DB_CONNECTION=mysql`

`DB_PORT=3306`

`DB_DATABASE=laravel`

`DB_USERNAME=root`

`DB_PASSWORD=`

প্রথমে ডাটাবেজ কানেকশন সম্পর্কে একটু ধারনা শেয়ার করি।

DB\_CONNECTION =

* ডাটাবেজ কানেক্ট করার জন্য আপনি কোন কুয়েরি ল্যাঙ্গুয়েজ সিলেক্ট করতে চান, সেটি এখান থেকে সিলেক্ট করে দিতে হবে। ডিফল্টভাবে mysql সেট করা থাকে। আপনি চাইলে sqlite, pgsql, sqlsrv সেট করে কাজ করতে পারেন। তবে আপনি যেটি ভালো জানেন, অবশ্যই সেটি দিয়েই কাজ করবেন।
    
* এর বাইরে অন্য কোন কুয়েরি ল্যাঙ্গুয়েজ দিয়ে ডাটাবেজ কানেক্ট করতে চাইলে config/database.php ফাইল ওপেন করে ম্যানুয়ালি সেট করে নিতে হবে।
    

DB\_HOST =

* ডাটাবেজ হোস্ট নিয়ে তেমন কিছু বলার নাই। যাহাই ১২৭.০.০.১ তাহাই লোকালহোস্ট।
    

DB\_PORT=3306

* আর আপনি কোন কুয়েরি ল্যাঙ্গুয়েজ ব্যবহার করছেন তার উপর ডিপেন্ড করছে, ডাটাবেজ পোর্ট কি হবে। যেমন:
    

`DB_PORT=3306 (MySQL)`

`DB_PORT=5432 (pgsql)`

`DB_PORT=1433 (sqlsrv)`

DB\_DATABASE

* ডাটাবেজ সিলেকশন করার পর আমাদেরকে একটি ডাটাবেজ ক্রিয়েট করতে হবে।
    

`DB_DATABASE= yourDatabaseName`

DB\_USERNAME=

* তারপর একটি ডাটাবেজ ইউজার তৈরি করতে হবে। ইউজার তৈরি করার সময় একটি পাসওয়ার্ড সেট করে রাখা ভালো। তবে ডিফল্টভাবে root নামে একটি ইউজার সেট করা থাকে। যার কোন পাসওয়ার্ড সেট করা থাকে না। সেটি দিয়েও প্রাকটিস করতে পারেন।
    

`DB_USERNAME=root`

`DB_PASSWORD=`

বিগিনারদের জন্য উপরের ব্যাপারগুলো খুবই ক্লিয়ার থাকা জরুরি।

#### **যারা একটু এডভ্যান্স তারা এই বাকি ভ্যারিয়েবল গুলোর সাথে পরিচিত হবেন যেভাবে।**

* মনে করুন, BROADCAST DRIVER ভ্যারিয়েবল সম্পর্কে জানতে চান। তাহলে প্রথমে config ফোল্ডারের ভেতরে যাবেন। তারপর broadcasting.php ফাইল ওপেন করবেন। তারপর দেখতে পাবেন BROADCAST DRIVER ভ্যারিয়েবল কেন প্রয়োজন? এর ডিফল্ট ভ্যালু কি?
    
* একটু লক্ষ্য করলে BROADCAST DRIVER ভ্যারিয়েবলের ভ্যালুগুলো দেখতে পাবেন। যেমন: pusher, ably, redis, log, null । এখন আপনাকে ধৈর্য নিয়ে পড়া শুরু করতে হবে। জানার চেষ্টা করতে হবে কোন ভ্যালুটা কিভাবে কাজ করে।
    

আশাকরি একইভাবে অবশিষ্ট ফাইলগুলো ওপেন করে আইডিয়ে নিতে পারবেন-

* CACHE\_DRIVER=file এর জন্য cache.php
    
* FILESYSTEM\_DISK=local এর জন্য filesystems.php
    
* QUEUE\_CONNECTION=sync এর জন্য queue.php
    
* SESSION\_DRIVER=file এর জন্য session.php
    
* MAIL\_MAILER=smtp এর জন্য mail.php
