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știUndefined array key. Pe multe servere$_ENVeste gol (setareavariables_ordernu conțineE).getenvfuncț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.