การสร้างไฟล์ .env
หลังจากที่เราติดตั้ง Dotenv ผ่าน Composer เรียบร้อยแล้ว ขั้นตอนต่อไปคือการสร้างไฟล์ .env ซึ่งเป็นไฟล์ที่เราจะใช้เก็บค่าคอนฟิกต่างๆ ของโปรเจกต์ของเรา เช่น ข้อมูลการเชื่อมต่อฐานข้อมูล, API Key, หรือค่าอื่นๆ ที่เราต้องการแยกออกจากโค้ดหลัก
รูปแบบของไฟล์ .env: KEY=VALUE
ไฟล์ .env มีรูปแบบที่เรียบง่าย คือ KEY=VALUE โดยที่:
KEYคือ ชื่อของตัวแปร Environment VariableVALUEคือ ค่าของตัวแปรนั้น
ตัวอย่างเช่น:
DB_HOST=localhost
DB_DATABASE=mydatabase
DB_USERNAME=myuser
DB_PASSWORD=mypassword
API_KEY=abcdefg1234567
APP_DEBUG=true
แต่ละบรรทัดในไฟล์ .env จะกำหนดค่าให้กับ Environment Variable หนึ่งตัว
การตั้งชื่อตัวแปร (Naming Conventions)
เพื่อให้ไฟล์ .env อ่านง่ายและเป็นระเบียบ ควรปฏิบัติตามหลักการตั้งชื่อตัวแปรดังนี้:
- ใช้ตัวพิมพ์ใหญ่ทั้งหมด: ชื่อตัวแปรควรเป็นตัวพิมพ์ใหญ่ทั้งหมด เช่น
DB_HOSTแทนที่จะเป็นdb_hostหรือDbHost - ใช้เครื่องหมาย underscore (_) คั่นคำ: หากชื่อตัวแปรประกอบด้วยหลายคำ ให้ใช้เครื่องหมาย underscore (_) คั่นระหว่างคำ เช่น
API_KEYแทนที่จะเป็นAPIKEY - หลีกเลี่ยงการใช้ space: ห้ามใช้ space ในชื่อตัวแปร
- สื่อความหมาย: ชื่อตัวแปรควรสื่อความหมายถึงค่าที่เก็บอยู่ เพื่อให้เข้าใจได้ง่ายว่าตัวแปรนั้นใช้ทำอะไร
การจัดเก็บค่า (Storing Values)
ค่าที่เก็บในไฟล์ .env สามารถเป็นได้ทั้ง String, Number, Boolean หรือแม้กระทั่ง array (ในรูปแบบ string ที่ต้อง parse เอาเอง)
- String: ค่าที่เป็นข้อความ สามารถใส่ใน double quotes (
") หรือ single quotes (') ก็ได้ แต่ถ้าค่ามี space หรืออักขระพิเศษ ควรใส่ quotes เพื่อป้องกันปัญหา - Number: ค่าที่เป็นตัวเลข ไม่จำเป็นต้องใส่ quotes
- Boolean: ค่าที่เป็น true/false สามารถใช้
true,false,1หรือ0ก็ได้
ตัวอย่าง:
APP_NAME="My Awesome App"
APP_ENV=development
APP_DEBUG=true
APP_URL=http://localhost:8000
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
SESSION_DRIVER=file
SESSION_LIFETIME=120
ข้อควรระวัง:
- อย่า commit ไฟล์
.envขึ้น Git repository: ไฟล์.envมักจะมีข้อมูลสำคัญ เช่น รหัสผ่าน หรือ API Key ซึ่งไม่ควรเปิดเผยต่อสาธารณะ ดังนั้นควรเพิ่มไฟล์.envใน.gitignoreเพื่อป้องกันการ commit ขึ้น Git - อย่าใส่ค่า default ในไฟล์
.env: ไฟล์.envควรมีเฉพาะค่าที่แตกต่างจากค่า default ที่กำหนดไว้ในโค้ด หากไม่มีค่าที่แตกต่าง ก็ไม่จำเป็นต้องกำหนดในไฟล์.env
ขั้นตอนการสร้างไฟล์ .env
- สร้างไฟล์ชื่อ
.envใน root directory ของโปรเจกต์ PHP ของคุณ - เปิดไฟล์
.envด้วย text editor ที่คุณถนัด - กำหนดค่า Environment Variables ตามรูปแบบ
KEY=VALUEโดยแต่ละบรรทัดคือหนึ่งตัวแปร - บันทึกไฟล์
.env
ตัวอย่างการสร้างไฟล์ .env:
- สร้างไฟล์ชื่อ
.envใน directory เดียวกับไฟล์composer.jsonของคุณ - เปิดไฟล์
.envด้วย text editor เช่น VS Code, Sublime Text, หรือ Notepad++ - เพิ่ม code ด้านล่างในไฟล์
.env
APP_NAME="My Application"
APP_ENV=local
APP_DEBUG=true
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=my_database
DB_USERNAME=my_user
DB_PASSWORD=my_password
กรณีใช้งานจริง
สมมติว่าเรามีโปรเจกต์ PHP ที่ต้องเชื่อมต่อกับฐานข้อมูล MySQL เราสามารถเก็บข้อมูลการเชื่อมต่อฐานข้อมูลไว้ในไฟล์ .env ได้ดังนี้:
DB_HOST=localhost
DB_DATABASE=mydatabase
DB_USERNAME=myuser
DB_PASSWORD=mypassword
จากนั้นในโค้ด PHP เราสามารถดึงค่าเหล่านี้มาใช้ได้ โดยไม่ต้อง hardcode ข้อมูลการเชื่อมต่อฐานข้อมูลไว้ในโค้ด
ข้อผิดพลาดที่พบบ่อยและวิธีแก้ไข
- ลืมใส่ไฟล์
.envใน.gitignore: ตรวจสอบให้แน่ใจว่าไฟล์.envถูกเพิ่มใน.gitignoreเพื่อป้องกันการ commit ขึ้น Git - ตั้งชื่อตัวแปรไม่ถูกต้อง: ตรวจสอบให้แน่ใจว่าชื่อตัวแปรเป็นตัวพิมพ์ใหญ่ทั้งหมด และใช้เครื่องหมาย underscore (_) คั่นคำ
- ไม่ได้โหลดไฟล์
.env: ตรวจสอบให้แน่ใจว่าได้โหลดไฟล์.envด้วย Dotenv ก่อนที่จะเข้าถึงค่า Environment Variables - ค่า Environment Variables ไม่ถูกต้อง: ตรวจสอบให้แน่ใจว่าค่าที่กำหนดในไฟล์
.envถูกต้องและตรงกับที่ต้องการ - Error: The file .env does not exist: ตรวจสอบให้แน่ใจว่าคุณได้สร้างไฟล์ .env ใน directory ที่ถูกต้อง (root directory ของโปรเจ็กต์)
ในบทความถัดไป เราจะมาเรียนรู้วิธีการโหลดไฟล์ .env ด้วย Dotenv และวิธีการเข้าถึงค่า Environment Variables ที่เรากำหนดไว้