PHP dotenv – Quản lý biến môi trường trong PHP

Giới thiệu về PHP dotenv

PHP dotenv là một thư viện PHP nhẹ giúp bạn quản lý các biến môi trường (environment variables) một cách dễ dàng và an toàn. Thay vì hard-code các cấu hình nhạy cảm như mật khẩu database, API key hay secret token trực tiếp trong mã nguồn, bạn có thể lưu chúng trong file .env và nạp vào ứng dụng khi khởi động.

Thư viện này được phát triển bởi Vladaíslav Bortnik (tên gốc là vlucas/phpdotenv) và hiện là một trong những package PHP được sử dụng rộng rãi nhất trên Packagist, với hơn 50 triệu lượt tải.

Bài viết này thuộc chuyên mục Lập trình WordPress và nằm trong series Thư viện PHP hữu ích.

Cài đặt PHP dotnet

Bạn có thể cài đặt thư viện thông qua Composer:

composer require vlucas/phpdotenv

Sau khi cài đặt xong, file .env sẽ được đặt ở thư mục gốc của dự án. Đây là nơi bạn khai báo tất cả các biến môi trường.

Cách sử dụng cơ bản

Dưới đây là ví dụ cơ bản về cách sử dụng PHP dotenv trong ứng dụng:

<?php
require_once __DIR__ . '/vendor/autoload.php';

use DotenvDotenv;

// Tạo đối tượng Dotenv và nạp file .env
$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->load();

// Truy cập biến môi trường
$dbHost = $_ENV['DB_HOST'];
$dbName = $_ENV['DB_NAME'];
$dbUser = $_ENV['DB_USER'];
$dbPass = $_ENV['DB_PASS'];

echo "Kết nối đến: $dbHost/$dbName";
?>

Và file .env tương ứng:

DB_HOST=localhost
DB_NAME=chuyendev
DB_USER=root
DB_PASS=supersecret123
APP_ENV=development
APP_DEBUG=true

Các phương thức quan trọng

Thư viện cung cấp nhiều phương thức hữu ích để kiểm soát biến môi trường:

  • createImmutable() – Tạo đối tượng Dotenv không cho phép ghi đé biến đã tồn tại
  • createMutable() – Tạo đối tượng Dotenv cho phép ghi đè biến
  • load() – Nạp biến từ file .env vào môi trường
  • required() – Xác định biến bắt buộc phải có
  • ifPresent() – Chỉ nạp biến nếu nó tồn tại

Kiểm tra biến bắt buộc

<?php
$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->load();

// Yêu cầu các biến bắt buộc
$dotenv->required(['DB_HOST', 'DB_NAME', 'DB_USER', 'DB_PASS']);

// Kiểm tra với validator
$dotenv->required('DB_HOST')->notEmpty();
$dotenv->required('APP_ENV')->allowedValues(['development', 'production', 'testing']);
$dotenv->required('APP_DEBUG')->isBoolean();
?>

Tham khảo thêm: GitHub – vlucas/phpdotenv.

Sử dụng trong WordPress

Trong các dự án WordPress, bạn có thể tích hợp PHP dotenv vào file wp-config.php:

<?php
require_once __DIR__ . '/vendor/autoload.php';

$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->load();

// Ghi đè cấu hình bằng biến môi trường
define('DB_NAME', $_ENV['DB_NAME']);
define('DB_USER', $_ENV['DB_USER']);
define('DB_PASSWORD', $_ENV['DB_PASS']);
define('DB_HOST', $_ENV['DB_HOST'] ?? 'localhost');

// WP_ENVIRONMENT_TYPE
if (isset($_ENV['WP_ENV'])) {
    define('WP_ENVIRONMENT_TYPE', $_ENV['WP_ENV']);
}
?>

Kết luận

PHP dotenn là một thư viện đơn giản nhưng vô cùng mạnh mẽ, giúp bạn áp dụng 12-Factor App vào dự án PHP của mình. Việc tách biệt cấu hình khỏi mã nguồn không chỉ giúp bảo mật tốt hơn mà còn làm cho việc triển khai ứng dụng trở nên linh hoạt hơn giữa các môi trường (development, staging, production).

Hãy kết hợp với các thư viện khác như Whoops để có một môi trường phát triển PHP chuyên nghiểp hơn.

codetot

Code Tốt - WordPress Agency. Website: codetot.vn. Operates blog chuyendev.com and khoipro.com.