Generator .env.example

Szablon zmiennych środowiskowych dla Laravela, Node.js i Pythona oraz zamiana gotowego .env w plik bez sekretów.

Bezpieczne (SSL)
Przetwarzanie Lokalne
100% Darmowe
Instrukcja
  • 1
    Wprowadź dane
    Wpisz treść, wklej tekst lub załaduj plik z dysku.
  • 2
    Kliknij przycisk
    Narzędzie natychmiast przetworzy Twoje dane w przeglądarce.
  • 3
    Pobierz wynik
    Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
function runTool() {
  return "Wynik gotowy w 0.1s";
}

Gotowe zestawy

Framework

Do 60 znaków. Nazwa ze spacją lub polskimi znakami trafi do pliku w cudzysłowie.

Baza danych
Dodatkowe sekcje

Zmiennych

26

Puste wartości

5

Do uzupełnienia w .env

Sekcji

5

Linii

38

Rozmiar

737 B
.env.example
# Skopiuj ten plik do .env i uzupełnij prawdziwe wartości lokalnie. # Plik .env nie trafia do repozytorium, a .env.example jest commitowany. # --- Aplikacja --- APP_NAME=MyApp APP_ENV=local APP_KEY= APP_DEBUG=true APP_URL=http://localhost # --- Logowanie --- LOG_CHANNEL=stack LOG_LEVEL=debug # --- Baza danych --- DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME= DB_PASSWORD= # --- Cache, sesje i kolejki --- CACHE_STORE=redis SESSION_DRIVER=redis QUEUE_CONNECTION=redis REDIS_HOST=127.0.0.1 REDIS_PORT=6379 REDIS_PASSWORD=null # --- Poczta --- MAIL_MAILER=smtp MAIL_HOST=127.0.0.1 MAIL_PORT=2525 MAIL_USERNAME= MAIL_PASSWORD= MAIL_FROM_ADDRESS="[email protected]" MAIL_FROM_NAME="${APP_NAME}"
  1. Utwórz lokalny plik .env z szablonucp .env.example .env
  2. Wygeneruj APP_KEY (wpisze się do .env)php artisan key:generate
  3. Upewnij się, że .env jest ignorowany przez Gitecho ".env" >> .gitignore
Co oznacza każda zmienna (26)
Zmienne w wygenerowanym pliku
ZmiennaWartość w szablonieDo czego służy
APP_NAME MyApp Nazwa aplikacji, używana m.in. w tytułach i stopkach e-maili.
APP_ENV local Środowisko uruchomienia: local, staging albo production.
APP_KEY pusta, uzupełnij w .env Klucz szyfrowania Laravela (sesje, ciasteczka). Wygeneruj: php artisan key:generate.
APP_DEBUG true Szczegółowe błędy na stronie. Na produkcji zawsze false.
APP_URL http://localhost Bazowy adres aplikacji, używany w linkach generowanych poza żądaniem HTTP.
LOG_CHANNEL stack Kanał logów; stack zapisuje do kilku kanałów jednocześnie.
LOG_LEVEL debug Najniższy zapisywany poziom logów (debug, info, warning, error…).
DB_CONNECTION mysql Sterownik bazy danych: mysql, pgsql albo sqlite.
DB_HOST 127.0.0.1 Adres serwera bazy danych.
DB_PORT 3306 Port bazy: 3306 dla MySQL/MariaDB, 5432 dla PostgreSQL.
DB_DATABASE laravel Nazwa bazy danych (dla SQLite: ścieżka do pliku).
DB_USERNAME pusta, uzupełnij w .env Użytkownik bazy danych.
DB_PASSWORD pusta, uzupełnij w .env Hasło do bazy danych. Tylko w .env, nigdy w repozytorium.
CACHE_STORE redis Magazyn cache (Laravel 11+; w starszych wersjach CACHE_DRIVER).
SESSION_DRIVER redis Gdzie przechowywane są sesje użytkowników.
QUEUE_CONNECTION redis Połączenie kolejki zadań (sync wykonuje zadania od razu).
REDIS_HOST 127.0.0.1 Adres serwera Redis.
REDIS_PORT 6379 Port Redis, domyślnie 6379.
REDIS_PASSWORD null Hasło Redis; null oznacza brak hasła.
MAIL_MAILER smtp Sposób wysyłki poczty (smtp, log, ses…).
MAIL_HOST 127.0.0.1 Serwer SMTP.
MAIL_PORT 2525 Port SMTP (np. 587 dla STARTTLS, 465 dla SSL).
MAIL_USERNAME pusta, uzupełnij w .env Login do serwera SMTP.
MAIL_PASSWORD pusta, uzupełnij w .env Hasło do serwera SMTP.
MAIL_FROM_ADDRESS "[email protected]" Adres nadawcy wysyłanych wiadomości.
MAIL_FROM_NAME "${APP_NAME}" Nazwa nadawcy; ${APP_NAME} wstawia wartość APP_NAME.

Plik .env.example commitujesz do repozytorium, a prawdziwy .env zostaje lokalnie i jest wpisany do .gitignore.

Przetwarzanie odbywa się w Twojej przeglądarce. Zawartość pliku nie jest wysyłana na serwer.

Co wyczyścić

Ściąga: składnia pliku .env

Najczęstsze zapisy w plikach .env i .env.example
ZapisZnaczenie
KLUCZ=wartość Podstawowy zapis. Najbezpieczniej bez spacji wokół znaku „=”.
# komentarz Linia pomijana przez parser.
KLUCZ="dwa słowa" Wartość ze spacjami albo znakiem # ujmij w cudzysłów.
KLUCZ= Pusta wartość: miejsce do uzupełnienia w lokalnym .env.
MAIL_FROM_NAME="${APP_NAME}" Wstawia wartość innej zmiennej. Laravel: bez cudzysłowów albo w podwójnych; Node.js: wymaga pakietu dotenv-expand.
REDIS_PASSWORD=null W Laravelu env() zamienia null, true i false na wartości PHP, a nie na tekst.
export KLUCZ=wartość Zapis zgodny z powłoką (source .env); akceptują go phpdotenv i python-dotenv.

.env a .env.example

Plik .env zawiera prawdziwe hasła i klucze, dlatego jest w .gitignore i zostaje na komputerze lub serwerze. Plik .env.example ma te same klucze z pustymi albo przykładowymi wartościami i trafia do repozytorium, więc każda osoba w zespole widzi, co musi ustawić.

Co zostawić puste

Hasła, klucze API, tokeny, APP_KEY, SECRET_KEY, JWT_SECRET i adresy połączeń z loginem w środku (DATABASE_URL). Przykładowe wartości zostaw tylko tam, gdzie nic nie zdradzają: porty, lokalne hosty (127.0.0.1, localhost), tryby i sterowniki.

Sekret trafił do repozytorium

Usunięcie pliku w kolejnym commicie nie wystarczy: wartość zostaje w historii Gita i w każdej kopii repozytorium. Najpierw unieważnij klucz lub zmień hasło, dopiero potem porządkuj historię (np. narzędziem git filter-repo).

Pułapka: cache konfiguracji Laravela

Po php artisan config:cache Laravel nie czyta już pliku .env, a wywołania env() poza katalogiem config/ zwracają null. Zmienne odczytuj przez config(), a po każdej zmianie .env na produkcji zbuduj cache ponownie.

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 (albo jeden z czterech gotowych zestawów), wpisz nazwę aplikacji, wskaż bazę danych i zdecyduj, czy projekt używa Redisa, poczty i plików w S3. Wynik to plik z pełną listą kluczy pogrupowanych komentarzami sekcji, w którym każdy sekret ma pustą wartość, czyli dokładnie taki, jaki powinien trafić do Gita obok kodu. Masz już działający .env? Wklej go w dolnej części narzędzia, a dostaniesz .env.example z wyczyszczonymi hasłami i kluczami.

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 generator .env.example

Trzy szablony odpowiadają trzem konwencjom nazewniczym: Laravel trzyma parametry bazy w osobnych zmiennych, Node.js i Python w jednym adresie połączenia DATABASE_URL. Przełączniki Redisa, poczty i S3 dokładają własne bloki, a wynik przechodzi przez deduplikację kluczy. Domyślny zestaw Laravel + MySQL + Redis + poczta daje 26 zmiennych w 5 sekcjach, z czego 5 ma puste wartości do uzupełnienia.

SekcjaLaravel / PHPNode.jsPython
AplikacjaAPP_NAME, APP_ENV, APP_KEY (pusty), APP_DEBUG, APP_URLNODE_ENV, APP_NAME, PORT, APP_URLAPP_ENV, APP_NAME, DEBUG
LogowanieLOG_CHANNEL, LOG_LEVEL––
Uwierzytelnianie–JWT_SECRET (pusty)SECRET_KEY (pusty)
Baza danychDB_CONNECTION, DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORDDATABASE_URL, format w komentarzuDATABASE_URL, format w komentarzu
Cache, sesje i kolejkiCACHE_STORE, SESSION_DRIVER, QUEUE_CONNECTION, REDIS_HOST, REDIS_PORT, REDIS_PASSWORDREDIS_URLREDIS_URL
PocztaMAIL_MAILER, MAIL_HOST, MAIL_PORT, MAIL_USERNAME, MAIL_PASSWORD, MAIL_FROM_ADDRESS, MAIL_FROM_NAMESMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASSEMAIL_HOST, EMAIL_PORT, EMAIL_HOST_USER, EMAIL_HOST_PASSWORD
Pliki (S3)FILESYSTEM_DISK, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, AWS_BUCKET, AWS_USE_PATH_STYLE_ENDPOINTAWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION, S3_BUCKETAWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, AWS_STORAGE_BUCKET_NAME

Przy opcji „Brak / SQLite” Laravel dostaje DB_CONNECTION=sqlite i zakomentowaną ścieżkę do pliku bazy, a w Node.js i Pythonie DATABASE_URL zostaje zakomentowany. Pod wynikiem narzędzie pokazuje rozwijaną tabelę z opisem każdej zmiennej oraz kroki „Co dalej” z poleceniami dla wybranego frameworka.

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, loginy i hasła zostają puste, żeby aplikacja zgłosiła błąd przy pierwszym uruchomieniu, zamiast po cichu wystartować na wartości z przykładu. Nieszkodliwe ustawienia, takie jak APP_ENV=local, PORT=3000 czy 127.0.0.1, warto wpisać, bo skracają start projektu do jednego cp .env.example .env. Adres bazy generator pokazuje w komentarzu (np. postgres://USER:PASSWORD@localhost:5432/DATABASE), a wartość DATABASE_URL zostawia pustą: w repozytorium nie leży wtedy ciąg wyglądający jak działający login z hasłem. Lokalny REDIS_URL bez hasła jest wpisany od razu.

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 nazwę aplikacji tylko wtedy, gdy musi (spacja, polskie znaki), a znaki $, ` i \ z niej usuwa, żeby nie uruchomiły interpolacji:

APP_NAME=MyApp
APP_NAME="Acme Shop"
MAIL_FROM_NAME="${APP_NAME}"
DB_PASSWORD=

Prawdziwe sekrety tworzysz później i lokalnie. Kroki pod wynikiem podają gotowe polecenia: php artisan key:generate dla Laravela, openssl rand -hex 32 dla JWT_SECRET i python -c "import secrets; print(secrets.token_urlsafe(50))" dla SECRET_KEY.

Jak zamienić gotowy .env na .env.example

Wklej zawartość pliku w polu „Masz już plik .env?” i wybierz tryb. „Tylko wrażliwe wartości” czyści hasła, tokeny, klucze, loginy, adresy hostów i URL-e z danymi logowania, a zostawia porty, tryby, sterowniki, null/true/false, odwołania ${ZMIENNA} oraz lokalne hosty (localhost, 127.0.0.1). „Wszystkie wartości” zostawia same klucze i komentarze. Przykład w pierwszym trybie:

DB_HOST=127.0.0.1 zostaje bez zmian
DB_PORT=3306 zostaje bez zmian
DB_PASSWORD=tajne-haslo → DB_PASSWORD=
STRIPE_SECRET=sk_live_... → STRIPE_SECRET=

Konwersja działa w przeglądarce, treść pliku nie jest wysyłana na serwer. Limit to 200 000 znaków. Powtórzone klucze i linie niepasujące do formatu KLUCZ=wartość są pomijane (podsumowanie podaje ich liczbę), prefiks export zostaje. Wrażliwe wartości są rozpoznawane po nazwie klucza i wyglądzie wartości, więc przed commitem przejrzyj wynik: klucz o nietypowej nazwie i krótkiej wartości może przejść niezauważony.

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ę, dlatego nowe klucze dopisuj w tym samym miejscu w obu plikach.

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() (po php artisan config:cache wywołania env() poza tym katalogiem zwracają null), a w Django moduł ustawień z konfiguratora settings.py.

Jak korzystać z generatora

  1. Wybierz framework albo kliknij gotowy zestaw, np. „Laravel + PostgreSQL + S3” lub „Node.js API + PostgreSQL”. Od frameworka zależą nazwy zmiennych i sposób opisu bazy.
  2. Wpisz nazwę aplikacji (do 60 znaków); nazwa z kilku słów dostanie cudzysłowy automatycznie, a puste pole da MyApp.
  3. Wskaż bazę: MySQL / MariaDB, PostgreSQL albo brak zewnętrznej bazy przy SQLite.
  4. Zaznacz Redisa, pocztę i S3, jeśli projekt ich używa.
  5. Kliknij „Generuj .env.example”, skopiuj albo pobierz wynik i zapisz go w katalogu głównym repozytorium, a potem wykonaj cp .env.example .env i 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ą. Wszystko, co uwierzytelnia lub podpisuje, zostaje puste, bo 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 szyfruje ciasteczka i dane sesji, więc jego ujawnienie pozwala podrobić sesję zalogowanego użytkownika. Każde środowisko potrzebuje własnego klucza, tworzonego lokalnie 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}, więc dla hasła ze znakiem dolara bezpieczniejsze są apostrofy.

Czy wklejony plik .env trafia na serwer?

Nie. Konwersja .env do .env.example odbywa się w przeglądarce, a do historii narzędzia zapisywany jest tylko wybrany tryb i liczba zmiennych, bez kluczy i wartości.

Co zrobić, gdy .env już trafił do repozytorium?

Najpierw unieważnij i wymień wszystkie poświadczenia z tego pliku, bo tylko to naprawdę usuwa skutki. Potem zajmij się historią: git rm --cached .env wyjmuje plik z indeksu, ale zostaje on we wcześniejszych commitach, a ich przepisanie (np. git filter-repo) wymaga zgody zespołu.

Zainstaluj Webp.pl Miej narzędzia we własnej kieszeni!