Ugrás a fő tartalomhoz

Dotenv (.env)

A Dotenv egy PHP könyvtár, amely lehetővé teszi, hogy az alkalmazás konfigurációját (adatbázis jelszavak, API kulcsok, titkos kulcsok) egy .env fájlban tárold a forráskódon kívül. A Bedrock alapértelmezetten használja.

Miért fontos?

A hagyományos WordPress-nél minden érzékeny adat a wp-config.php fájlban van, ami a kód része. Ez több problémát okoz:

  • Jelszavak a Git repóban - Bárki, aki hozzáfér a repóhoz, látja az adatbázis jelszót
  • Egy konfig minden környezetre - Fejlesztői és éles beállítások keverednek
  • Biztonsági kockázat - A wp-config.php a webroot-ban van, webszerver-hiba esetén elérhető

A .env fájl megoldja ezeket:

  • Nem kerül a Git repóba (a .gitignore kizárja)
  • Minden környezetnek saját .env fájlja van
  • A webroot felett helyezkedik el (Bedrocknál)

Hogyan működik?

.env fájl felépítése

A .env fájl egyszerű KULCS=érték párokból áll:

# Adatbázis beállítások
DB_NAME='wordpress'
DB_USER='wp_user'
DB_PASSWORD='titkos_jelszo'
DB_HOST='localhost'
DB_PREFIX='wp_'

# WordPress környezet
WP_ENV='development'
WP_HOME='https://example.com'
WP_SITEURL="${WP_HOME}/wp"

# Debug
WP_DEBUG=true
WP_DEBUG_LOG=true

# API kulcsok
GOOGLE_MAPS_API_KEY='AIza...'
SMTP_PASSWORD='smtp_jelszo'

Hivatkozás más változókra

A .env fájlban hivatkozhatsz korábban definiált változókra:

WP_HOME='https://example.com'
WP_SITEURL="${WP_HOME}/wp"

Kommentek

A # karakterrel kezdődő sorok kommentek:

# Ez egy komment
DB_NAME='wordpress' # Sor végi komment is működik

Bedrock .env fájl

A Bedrock .env fájlja a következő változókat tartalmazza:

DB_NAME='adatbazis_neve'
DB_USER='adatbazis_felhasznalo'
DB_PASSWORD='adatbazis_jelszo'
DB_HOST='localhost'
DB_PREFIX='wp_'

WP_ENV='development'
WP_HOME='https://example.com'
WP_SITEURL="${WP_HOME}/wp"

# Salt kulcsok (generáld: https://roots.io/salts.html)
AUTH_KEY='generalt-kulcs'
SECURE_AUTH_KEY='generalt-kulcs'
LOGGED_IN_KEY='generalt-kulcs'
NONCE_KEY='generalt-kulcs'
AUTH_SALT='generalt-kulcs'
SECURE_AUTH_SALT='generalt-kulcs'
LOGGED_IN_SALT='generalt-kulcs'
NONCE_SALT='generalt-kulcs'
Salt kulcsok

A Bedrock-hoz a salt kulcsokat a roots.io/salts.html oldalon generálhatod, amely rögtön .env formátumban adja az eredményt.

Környezetek kezelése

Minden környezetnek (fejlesztői, staging, éles) saját .env fájlja van, különböző beállításokkal:

VáltozóFejlesztőiStagingÉles
WP_ENVdevelopmentstagingproduction
WP_HOMEhttps://local.example.comhttps://staging.example.comhttps://example.com
WP_DEBUGtruetruefalse
DB_NAMEwp_devwp_stagingwp_production

.env.example

A repóban egy .env.example fájl tartalmazza a szükséges változók listáját értékek nélkül (vagy példaértékekkel). Ez segíti az új fejlesztőket:

DB_NAME='adatbazis_neve'
DB_USER='felhasznalonev'
DB_PASSWORD='jelszo'
DB_HOST='localhost'

WP_ENV='development'
WP_HOME='https://local.example.com'
WP_SITEURL="${WP_HOME}/wp"

Új fejlesztő belépésekor:

cp .env.example .env
# Szerkeszd a .env fájlt a saját beállításaiddal

Biztonsági szabályok

Soha ne commitold a .env fájlt

A .gitignore fájlnak tartalmaznia kell:

.env
Fontos

Ha a .env fájl valaha bekerült a Git történetbe, az abban lévő jelszavak kompromittáltnak tekintendők. Ilyenkor minden jelszót és kulcsot cserélni kell.

A .env fájl helye

A Bedrocknál a .env fájl a projekt gyökerében van, ami a webroot (web/) felett helyezkedik el. Így a webszerver nem tudja kiszolgálni.

projekt/
├── .env # ← Itt van, NEM érhető el böngészőből
├── web/ # ← A webszerver csak ezt a mappát szolgálja ki
│ └── ...
└── ...

Jogosultságok

Az éles szerveren a .env fájl jogosultsága:

chmod 600 .env      # Csak a tulajdonos olvashatja

PHP-ben való használat

A Bedrock automatikusan betölti a .env fájlt. Ha egyedi PHP kódban szeretnéd elérni a változókat:

// Környezeti változó olvasása
$db_name = env('DB_NAME');
$api_key = env('GOOGLE_MAPS_API_KEY');

// Vagy PHP natív módszerrel
$db_name = getenv('DB_NAME');
$db_name = $_ENV['DB_NAME'];

Összehasonlítás: wp-config.php vs .env

Szempontwp-config.php.env + Bedrock
Jelszavak helyeA kódban, Git repóbanKülön fájlban, repón kívül
KörnyezetekEgy fájl, kézi átírásKörnyezetenként külön .env
BiztonságWebroot-banWebroot felett
Új fejlesztő belépéseJelszavakat kell megosztani.env.example másolása
Titkos kulcsok cseréjeCommit + deploy szükségesCsak a .env fájl szerkesztése

Források