getenv / putenv în PHP

Citește o variabilă de mediu (getenv) sau setează una pentru procesul curent (putenv).

Sintaxă
getenv(?string $name = null, bool $local_only = false): array|string|false

Ce face getenv / putenv

Variabilele de mediu sunt setări date programului din afara codului: de serverul web, de Docker sau de panoul de găzduire. Sunt locul recomandat pentru parole și chei API, ca ele să nu ajungă în codul sursă.

getenv("NUME") returnează valoarea ca text sau false dacă variabila nu există. putenv("NUME=valoare") setează o variabilă doar pentru procesul curent și pentru programele pornite din el. Fișierele .env nu sunt citite automat de PHP: pentru ele ai nevoie de o bibliotecă (de exemplu vlucas/phpdotenv).

Parametri

Parametru Descriere
$name Numele variabilei. Fără el, returnează toate variabilele, într-un tablou.
$local_only Opțional. true citește doar variabilele locale, setate cu putenv sau de sistem, nu pe cele date de serverul web.

Ce returnează

getenv: valoarea, false dacă lipsește, sau tabloul tuturor variabilelor. putenv: true la succes.

Exemple

Exemplul 1: Setare și citire

<?php
putenv("APP_ENV=productie");

var_dump(getenv("APP_ENV"));
var_dump(getenv("VARIABILA_LIPSA"));

Rezultat

string(9) "productie"
bool(false)

Exemplul 2: Valoare implicită când variabila lipsește

Operatorul ?: alege valoarea din dreapta când getenv returnează false sau text gol.

<?php
putenv("DB_HOST=db.exemplu.ro");

$host = getenv("DB_HOST") ?: "localhost";
$port = (int) (getenv("DB_PORT") ?: 3306);

echo "$host:$port";

Rezultat

db.exemplu.ro:3306

Greșeli frecvente

  • Citești $_ENV["NUME"] și primești Undefined array key. Pe multe servere $_ENV este gol (setarea variables_order nu conține E). getenv funcționează și atunci.
  • Scrii parole direct în cod și publici codul pe GitHub. Pune-le în variabile de mediu și citește-le cu getenv.

Comenzi înrudite

  • ini_set / ini_get: Schimbă o setare din php.ini doar pentru scriptul curent (ini_set) sau îi citește valoarea (ini_get).
  • parse_ini_file: Citește un fișier de configurare .ini și îl transformă într-un tablou.
  • exec: Rulează o comandă a sistemului de operare și returnează ultima linie afișată de ea.