ตัวแปรสภาพแวดล้อมและไฟล์ .env
จัดการการตั้งค่าที่ละเอียดอ่อนด้วยไฟล์ .env และไลบรารี dotenv ใน PHP
ตัวแปรสภาพแวดล้อมและไฟล์ .env เป็นบทเรียน PHP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน PHP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดจึงใช้ตัวแปรสภาพแวดล้อม
การเขียนข้อมูลรับรองหรือการกำหนดค่าเฉพาะสภาพแวดล้อมไว้ตายตัวในซอร์สโค้ดไม่ปลอดภัย และทำให้การนำระบบไปใช้งานเปราะบาง ตัวแปรสภาพแวดล้อมช่วยแยกการกำหนดค่าออกจากโค้ด
ไฟล์ .env
ไฟล์ .env มีคู่คีย์-ค่าที่โหลดเข้าสู่สภาพแวดล้อมเมื่อเริ่มทำงาน ให้เพิ่มไฟล์นี้ใน .gitignore — NEVER ส่งไฟล์นี้เข้าไปในระบบควบคุมเวอร์ชัน
# .env
APP_ENV=production
APP_KEY=base64:...
DB_HOST=127.0.0.1
DB_NAME=myapp
DB_USER=myapp_user
DB_PASS=supersecret
REDIS_HOST=127.0.0.1
MAIL_HOST=smtp.mailtrap.ioการเชื่อมต่อ .env กับ Laravel
Laravel ใช้ vlucas/phpdotenv เพื่อโหลด .env โดยอัตโนมัติ เข้าถึงค่าต่าง ๆ ได้ด้วยตัวช่วย env()
<?php
$host = env("DB_HOST", "127.0.0.1"); // "127.0.0.1" is the defaultconfig() เทียบกับ env()
ใช้ env() เฉพาะในไฟล์ config/*.php เท่านั้น ส่วนที่อื่นให้ใช้ config("database.host") ซึ่งทำงานได้ถูกต้องเมื่อเปิดใช้การแคชการกำหนดค่า
<?php
// In config/database.php:
"host" => env("DB_HOST", "127.0.0.1")
// In your service classes:
$host = config("database.connections.mysql.host");การแคชการกำหนดค่า
แคชการกำหนดค่าสำหรับระบบจริง เพื่อข้ามการแยกวิเคราะห์ .env ในทุกคำขอ
$ php artisan config:cache
# After changing .env:
$ php artisan config:clearPHP พื้นฐานด้วย phpdotenv
ใช้ vlucas/phpdotenv นอก Laravel
$ composer require vlucas/phpdotenv
<?php
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
$host = $_ENV["DB_HOST"];ตัวแปรที่จำเป็น
บังคับตรวจสอบตัวแปรสภาพแวดล้อมที่จำเป็นเมื่อเริ่มทำงาน เพื่อค้นหาการกำหนดค่าที่ขาดหายได้ตั้งแต่เนิ่น ๆ
<?php
$dotenv->required(["DB_HOST", "DB_NAME", "DB_USER", "DB_PASS"]);
$dotenv->required(["DB_PORT"])->isInteger();ไฟล์ .env.example
ส่งไฟล์ .env.example ที่มีชื่อของตัวแปรทั้งหมดแต่ไม่มีค่าเข้าไปในระบบควบคุมเวอร์ชัน นักพัฒนาจะคัดลอกไฟล์นี้เป็น .env แล้วกรอกค่าของตนเอง
ตัวแปรสภาพแวดล้อมระดับเซิร์ฟเวอร์
ในระบบจริง ให้กำหนดตัวแปรสภาพแวดล้อมที่ระดับเซิร์ฟเวอร์ (ไฟล์บริการของ systemd แฟล็ก --env ของ Docker และข้อมูลลับของ Kubernetes) แทนการใช้ไฟล์ .env
# systemd service:
[Service]
Environment="APP_ENV=production"
Environment="DB_HOST=db.internal"การจัดการข้อมูลลับ
สำหรับข้อมูลรับรองที่ละเอียดอ่อน (คีย์ API และใบรับรอง) ให้พิจารณาใช้ตัวจัดการข้อมูลลับ เช่น HashiCorp Vault, AWS Secrets Manager หรือข้อมูลลับของ GitHub Actions สำหรับ CI
สรุป
เก็บการกำหนดค่าเฉพาะสภาพแวดล้อมทั้งหมดไว้ใน .env และห้ามส่งไฟล์นี้เข้าไปในระบบควบคุมเวอร์ชัน ใช้ config() ในโค้ดแอปพลิเคชัน และใช้ env() เฉพาะในไฟล์กำหนดค่า แคชการกำหนดค่าในระบบจริงด้วย php artisan config:cache
ตรวจสอบความเข้าใจ
ควรเรียกใช้ env() ที่ใดในแอป Laravel
คำถามที่พบบ่อย
บทเรียน “ตัวแปรสภาพแวดล้อมและไฟล์ .env” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ตัวแปรสภาพแวดล้อมและไฟล์ .env” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส PHP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ตัวแปรสภาพแวดล้อมและไฟล์ .env”
จัดการการตั้งค่าที่ละเอียดอ่อนด้วยไฟล์ .env และไลบรารี dotenv ใน PHP คุณปฏิบัติ PHP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน PHP Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน PHP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “ตัวแปรสภาพแวดล้อมและไฟล์ .env” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน PHP Academy นี้ได้ไหม
ได้ บทเรียน PHP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การกำหนดค่า Nginx และ PHP-FPM
- ตัวแปรสภาพแวดล้อมและไฟล์ .env
- การนำไปใช้งานด้วย GitHub Actions
- การสร้างอิมเมจ Docker สำหรับแอปพลิเคชัน PHP