Generator .env.example
Szablon zmiennych środowiskowych, który bezpiecznie trafia do repozytorium.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator .env.example — szablon konfiguracji, który bezpiecznie trafia do repozytorium
Generator .env.example składa szablon zmiennych środowiskowych dla Laravela, Node.js i Pythona. Wybierz framework, wpisz nazwę aplikacji, wskaż bazę danych i zdecyduj, czy projekt używa Redisa oraz poczty. Wynik to plik z pełną listą kluczy pogrupowanych komentarzami sekcji, w którym każdy sekret ma pustą wartość — dokładnie taki, jaki powinien trafić do Gita obok kodu.
Po co .env.example, jeśli .env jest ignorowany
Plik .env z prawdziwym hasłem do bazy i kluczem aplikacji nie ma czego szukać w repozytorium, dlatego trafia do .gitignore. Razem z nim znika jednak jedyna lista mówiąca, jakich zmiennych aplikacja potrzebuje: nowa osoba klonuje projekt i dostaje wyjątek o kluczu, którego nazwy nie ma nigdzie w kodzie. .env.example zamyka tę lukę i jest wersjonowany, więc nowa integracja jest w diffie widoczna jako nowy klucz. Zakładając repozytorium, wygeneruj najpierw listę ignorowanych ścieżek w generatorze .gitignore i sprawdź, czy .env jest na niej, a .env.example nie.
Co generuje to narzędzie
Trzy szablony odpowiadają trzem konwencjom nazewniczym: Laravel trzyma parametry bazy w osobnych zmiennych, Node.js i Python w jednym adresie połączenia. Przełączniki Redisa i poczty dokładają własne bloki, a wynik przechodzi przez deduplikację kluczy.
| Sekcja | Laravel / PHP | Node.js | Python |
|---|---|---|---|
| Aplikacja | APP_NAME, APP_ENV, APP_DEBUG, APP_URL | NODE_ENV, APP_NAME, PORT, APP_URL | APP_ENV, APP_NAME, DEBUG |
| Klucz podpisu | APP_KEY — pusty | JWT_SECRET — pusty | SECRET_KEY — pusty |
| Baza danych | DB_CONNECTION, DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD | DATABASE_URL, format w komentarzu | DATABASE_URL, format w komentarzu |
| Cache i kolejki | CACHE_STORE, QUEUE_CONNECTION, REDIS_HOST | REDIS_URL | REDIS_URL |
| Poczta | MAIL_MAILER, MAIL_HOST, MAIL_PORT, MAIL_PASSWORD | SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS | EMAIL_HOST, EMAIL_PORT, EMAIL_HOST_USER |
Zmienna środowiskowa a plik .env
Zmienna środowiskowa jest własnością procesu: ustawia ją system, kontener albo panel hostingu i istnieje niezależnie od plików w katalogu. .env to tylko wygodny sposób załadowania zestawu takich zmiennych na maszynie deweloperskiej — czyta go biblioteka, nie system. Zmienna już obecna w środowisku najczęściej nie zostanie nadpisana wpisem z pliku, dlatego na produkcji .env zwykle nie jest potrzebny: konfigurację wstrzykuje menedżer sekretów albo dyrektywa serwera, na przykład SetEnv z generatora pliku .htaccess. .env.example zostaje kontraktem — mówi, co dostarczyć, nie skąd.
Wartości: puste sekrety, atrapy, cudzysłowy i spacje
Zasada jest jedna: żadna wartość w .env.example nie może być prawdziwa. Klucze podpisu i hasła zostają puste, żeby aplikacja krzyknęła przy pierwszym uruchomieniu, zamiast po cichu wystartować na wartości z przykładu. Nieszkodliwe ustawienia — APP_ENV=local, PORT=3000, 127.0.0.1 — warto wpisać, bo skracają start projektu do jednego cp .env.example .env. Adres połączenia generator pokazuje w komentarzu, a wartość zostawia pustą — w repozytorium nie leży wtedy ciąg wyglądający jak działający login z hasłem.
Osobna pułapka to cytowanie. Wartość bez cudzysłowów kończy się na pierwszej spacji albo na znaku #, więc nazwa z dwóch słów wymaga cudzysłowów. W cudzysłowach podwójnych część bibliotek rozwija ${INNA_ZMIENNA} i sekwencje ucieczki, w apostrofach nie. Generator cytuje wartość tylko wtedy, gdy musi:
APP_NAME=MyApp
APP_NAME="Acme Shop"
MAIL_FROM_NAME="${APP_NAME}"
DB_PASSWORD=
Prawdziwe sekrety tworzysz później i lokalnie — przyda się generator haseł.
Komentarze, kolejność kluczy i walidacja przy starcie
Wszystko od znaku # do końca linii jest komentarzem i to jedyne miejsce, w którym można wyjaśnić, skąd wziąć wartość i czy jest wymagana. Generator używa komentarzy jako nagłówków sekcji oraz jako zakomentowanych przykładów tam, gdzie wartość musi zostać pusta. Gdy oba pliki wymieniają klucze w tej samej kolejności, diff pokazuje braki w sekundę; rozjechany plik uporządkuje sorter zmiennych pliku .env.
Sam szablon nie zmusi nikogo do wypełnienia pól, dlatego obecność wymaganych zmiennych warto sprawdzać na starcie procesu, a nie w chwili, gdy jakaś funkcja pierwszy raz sięgnie po klucz API. Brak konfiguracji ma zatrzymać wdrożenie od razu, z komunikatem wskazującym nazwę zmiennej. W Laravelu naturalnym miejscem są pliki z katalogu config czytające zmienne przez env(), a w Django moduł ustawień z konfiguratora settings.py.
Jak korzystać z generatora
- Wybierz framework — od tego pola zależą nazwy zmiennych i sposób opisu bazy.
- Wpisz nazwę aplikacji; nazwa z kilku słów dostanie cudzysłowy automatycznie.
- Wskaż bazę: MySQL, PostgreSQL albo brak zewnętrznej bazy przy SQLite.
- Zaznacz Redisa i pocztę, jeśli projekt ich używa.
- Kliknij Generuj .env.example, zapisz wynik w katalogu głównym repozytorium, a potem wykonaj
cp .env.example .envi uzupełnij puste wartości.
Najczęściej zadawane pytania
Czy .env.example może zawierać wartości domyślne?
Tak, o ile są nieszkodliwe. APP_ENV=local, DB_HOST=127.0.0.1 czy PORT=3000 skracają uruchomienie projektu i nic nie ujawniają. Granica jest wyraźna: wszystko, co uwierzytelnia lub podpisuje, zostaje puste. Wartość wpisana „na chwilę” ma zwyczaj dożywać do produkcji.
Dlaczego APP_KEY jest pusty, a nie wygenerowany?
Bo klucz w repozytorium przestaje być sekretem. APP_KEY podpisuje ciasteczka i szyfruje dane sesji, więc jego ujawnienie pozwala podrobić sesję zalogowanego użytkownika. Każde środowisko potrzebuje własnego klucza, tworzonego lokalnie — w Laravelu komendą php artisan key:generate.
Kiedy wartość wymaga cudzysłowów?
Gdy zawiera spację, znak # albo cokolwiek, co parser mógłby uznać za koniec wartości: APP_NAME="Acme Shop". W cudzysłowach podwójnych część bibliotek rozwija ${ZMIENNA} — jeśli hasło zawiera znak dolara, apostrofy są bezpieczniejsze.
Co zrobić, gdy .env już trafił do repozytorium?
Najpierw unieważnij i wymień wszystkie poświadczenia z tego pliku — to jedyny krok, który naprawdę usuwa skutki. Dopiero potem zajmij się historią: git rm --cached .env wyjmuje plik z indeksu, ale zostaje on we wcześniejszych commitach, a ich przepisanie wymaga zgody zespołu.