Skip to content

Dotenv

Modul pro práci s proměnnými prostředí - načítání souboru .env a bezpečný přístup k hodnotám.

Petrovo CMS používá balíček vlucas/dotenv obalený jednoduchými helper funkcemi v namespace Petrovo\Dotenv.

Základní použití

use Petrovo\Dotenv;

// Načtení .env souboru (obvykle v bootstrap.php)
Dotenv\init(__DIR__);

// Čtení proměnné
$db_host = Dotenv\env('DATABASE_HOST');

// S výchozí hodnotou
$debug = Dotenv\env('DEBUG', '0');

// Kontrola existence (vyhodí výjimku pokud chybí)
Dotenv\requires('DATABASE_URL');

Funkce

init(string $path): array

Načte a parsuje .env soubor z zadané cesty. Vrací pole všech načtených proměnných.

// Typicky v bootstrap.php
$env = Dotenv\init(__DIR__);

// Proměnné jsou teď dostupné přes env()

env(?string $key = null, ?string $default = null)

Vrátí hodnotu proměnné prostředí. Bez parametru vrací všechny proměnné.

// Konkrétní proměnná
$app_env = Dotenv\env('APP_ENV');  // 'dev' nebo 'prod'

// S výchozí hodnotou
$timeout = Dotenv\env('TIMEOUT', '30');

// Všechny proměnné
$all = Dotenv\env();  // pole všech $_SERVER proměnných

requires(string $key): bool

Vyhodí výjimku UnexpectedValueException pokud proměnná neexistuje. Jinak vrátí true.

// Kontrola povinné proměnné
try {
    Dotenv\requires('DATABASE_URL');
    Dotenv\requires('APP_KEY');
} catch (UnexpectedValueException $e) {
    die("Chybí konfigurační proměnná: " . $e->getMessage());
}

Příklad .env souboru

APP_ENV=dev
APP_KEY=your-secret-key-here
DATABASE_URL=mysql://user:password@localhost/dbname
ALLOWED_IP=127.0.0.1,192.168.1.1
CORS_ORIGINS=http://localhost:3000

Poznámky

  • Proměnné se ukládají do $_SERVER - jsou globálně dostupné
  • Speciální znaky v heslech musí být URL-encoded v DATABASE_URL
  • V .env souborů obvykle není commitem do gitu (přidej do .gitignore)
  • Hesla a API klíče jsou citlivé - hlídej práva přístupu k souboru