Tovább a tartalomhoz

Dotenv (.env)

Környezeti változók kezelése .env fájlokkal WordPress és Bedrock projektekben - biztonságos konfiguráció és jelszókezelés.

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.

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)

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'

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

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

A # karakterrel kezdődő sorok kommentek:

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

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'

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

Változó Fejlesztői Staging Éles
WP_ENV development staging production
WP_HOME https://local.example.com https://staging.example.com https://example.com
WP_DEBUG true true false
DB_NAME wp_dev wp_staging wp_production

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:

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

A .gitignore fájlnak tartalmaznia kell:

.env

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
│ └── ...
└── ...

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

Terminál
chmod 600 .env # Csak a tulajdonos olvashatja

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

Szekció neve “Összehasonlítás: wp-config.php vs .env”
Szempont wp-config.php .env + Bedrock
Jelszavak helye A kódban, Git repóban Külön fájlban, repón kívül
Környezetek Egy fájl, kézi átírás Környezetenként külön .env
Biztonság Webroot-ban Webroot felett
Új fejlesztő belépése Jelszavakat kell megosztani .env.example másolása
Titkos kulcsok cseréje Commit + deploy szükséges Csak a .env fájl szerkesztése

Tiszteletben tartjuk a magánszférádat

Sütiket használunk a böngészési élmény javítására és a forgalom elemzésére. Az analitika csak akkor indul, ha engeded. Adatvédelmi irányelvek, Sütitájékoztató.

Sütibeállítások