Zmienne środowiskowe i pliki .env
Zarządzaj poufną konfiguracją za pomocą plików .env i bibliotek dotenv w PHP
Zmienne środowiskowe i pliki .env to bezpłatna lekcja PHP Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej PHP Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs PHP Academy zawiera 4 lekcji w sumie.
Dlaczego używać zmiennych środowiskowych?
Wpisywanie poświadczeń lub konfiguracji zależnej od środowiska bezpośrednio w kodzie źródłowym jest niebezpieczne i utrudnia wdrażanie. Zmienne środowiskowe oddzielają konfigurację od kodu.
Plik .env
Plik .env zawiera pary klucz–wartość ładowane do środowiska podczas uruchamiania aplikacji. Należy dodać go do .gitignore — NIGDY nie należy zatwierdzać go w systemie kontroli wersji.
# .env
APP_ENV=production
APP_KEY=base64:...
DB_HOST=127.0.0.1
DB_NAME=myapp
DB_USER=myapp_user
DB_PASS=supersecret
REDIS_HOST=127.0.0.1
MAIL_HOST=smtp.mailtrap.ioIntegracja Laravel z plikiem .env
Laravel używa vlucas/phpdotenv do automatycznego ładowania pliku .env. Dostęp do wartości można uzyskać za pomocą pomocniczej funkcji env().
<?php
$host = env("DB_HOST", "127.0.0.1"); // "127.0.0.1" is the defaultconfig() a env()
Funkcji env() należy używać wyłącznie w plikach config/*.php. W każdym innym miejscu należy używać config("database.host") — działa to poprawnie z buforowaniem konfiguracji.
<?php
// In config/database.php:
"host" => env("DB_HOST", "127.0.0.1")
// In your service classes:
$host = config("database.connections.mysql.host");Buforowanie konfiguracji
W środowisku produkcyjnym należy buforować konfigurację, aby uniknąć analizowania pliku .env przy każdym żądaniu.
$ php artisan config:cache
# After changing .env:
$ php artisan config:clearCzysty PHP z phpdotenv
Poza Laravel należy używać vlucas/phpdotenv.
$ composer require vlucas/phpdotenv
<?php
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
$host = $_ENV["DB_HOST"];Wymagane zmienne
Należy sprawdzać wymagane zmienne środowiskowe podczas uruchamiania aplikacji, aby wcześnie wykrywać brakującą konfigurację.
<?php
$dotenv->required(["DB_HOST", "DB_NAME", "DB_USER", "DB_PASS"]);
$dotenv->required(["DB_PORT"])->isInteger();Plik .env.example
Należy zatwierdzić plik .env.example zawierający wszystkie nazwy zmiennych, ale bez wartości. Deweloperzy kopiują go do .env i uzupełniają własne wartości.
Zmienne środowiskowe na poziomie serwera
W środowisku produkcyjnym należy ustawiać zmienne środowiskowe na poziomie serwera (w plikach usług systemd, za pomocą flag Docker --env lub sekretów Kubernetes), zamiast używać pliku .env.
# systemd service:
[Service]
Environment="APP_ENV=production"
Environment="DB_HOST=db.internal"Zarządzanie sekretami
W przypadku poufnych poświadczeń (kluczy API, certyfikatów) warto rozważyć menedżer sekretów, taki jak HashiCorp Vault, AWS Secrets Manager lub sekrety GitHub Actions na potrzeby CI.
Podsumowanie
Całą konfigurację zależną od środowiska należy przechowywać w pliku .env. Nigdy nie należy go zatwierdzać w repozytorium. W kodzie aplikacji należy używać config(), a env() wyłącznie w plikach konfiguracji. W środowisku produkcyjnym należy buforować konfigurację za pomocą php artisan config:cache.
Szybkie sprawdzenie
Gdzie należy wywoływać env() w aplikacji Laravel?
Często zadawane pytania
Czy lekcja „Zmienne środowiskowe i pliki .env” jest bezpłatna?
Tak — pełny tekst „Zmienne środowiskowe i pliki .env” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu PHP Academy, przejdź na CoddyKit PRO. Kurs PHP Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Zmienne środowiskowe i pliki .env”?
Zarządzaj poufną konfiguracją za pomocą plików .env i bibliotek dotenv w PHP Ćwiczysz PHP Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć PHP Academy?
Nie wymagamy żadnego doświadczenia. PHP Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Zmienne środowiskowe i pliki .env”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji PHP Academy?
Tak. Każda lekcja PHP Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Konfiguracja Nginx i PHP-FPM
- Zmienne środowiskowe i pliki .env
- Wdrażanie za pomocą GitHub Actions
- Konteneryzacja aplikacji PHP za pomocą Dockera