একটি database password, একটি API key, বা একটি local machine আর একটি live server-এর মধ্যে ভিন্ন একটি setting একটি PHP file-এ hardcode থাকার যোগ্য না — একটি environment variable এটাকে সম্পূর্ণভাবে codebase-এর বাইরে রাখে।
$dbHost = getenv('DB_HOST');
$dbPassword = getenv('DB_PASSWORD');
// অথবা, server configuration-এর উপর নির্ভর করে:
$dbHost = $_ENV['DB_HOST'] ?? $_SERVER['DB_HOST'];Version control-এর বাইরে রাখা একটি plain text file, key-value pair list করা — পুরো OS configure না করেই একটি local machine-এ environment variable সেট করার standard উপায়।
# .env
DB_HOST=localhost
DB_NAME=myapp
DB_USER=root
DB_PASSWORD=secret123
API_KEY=sk_test_abc123PHP native ভাবে .env file পড়ে না — এর জন্য standard package, Composer দিয়ে install করা, file-এর মান getenv()/$_ENV-তে load করে।
composer require vlucas/phpdotenvrequire 'vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
echo getenv('DB_HOST'); // localhost# .gitignore
.envএই lesson-এর সবচেয়ে গুরুত্বপূর্ণ habit
একটি public repository-তে commit করা একটি .env file একটি leak হওয়া API key বা database password-এর সবচেয়ে common real-world কারণগুলোর একটা — প্রথম commit থেকেই এটা .gitignore-এ যোগ করুন, পরে না।
Key সহ কিন্তু placeholder মান সহ file-এর একটি version, repo-তে commit করা — কোনো আসল secret expose না করে প্রতিটি teammate-কে কোন variable দরকার তা দেখায়।
# .env.example — commit করা নিরাপদ
DB_HOST=localhost
DB_NAME=
DB_USER=
DB_PASSWORD=
API_KEY=