Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас

Перевірка .env

Побачити, що Laravel насправді прочитає з .env

Дані надсилаються на сервер, але не зберігаються

Цей інструмент не можна виконати у браузері, тому введені дані надсилаються на наш сервер. Ми обробляємо їх у пам'яті та одразу повертаємо результат: нічого не записується в базу, у файли чи в логи, нічого не передається третім сторонам. Та все ж не вставляйте сюди справжні робочі паролі чи ключі - для чутливих даних краще скористатися локальними інструментами.

Поділитись

Навіщо перевіряти .env

.env виглядає простим - KEY=value у кожному рядку - і саме тому помилки в ньому важко помітити очима. Лапки, пробіли, символ #, порожні значення: у кожного з них своя поведінка, і вона не завжди та, на яку розраховуєш.

Цей інструмент розбирає вміст тим самим парсером, яким його читає Laravel - vlucas/phpdotenv. Тому показане тут - це буквально те, що отримає env(), а не приблизна оцінка.

Пастки, які видно одразу

Пробіли навколо =. APP_NAME = Laravel дасть ключ APP_NAME з пробілом. Правильно - без пробілів.

# усередині значення. Без лапок усе після решітки стає коментарем:

APP_NAME=Мій сайт # тут коментар     → "Мій сайт"
APP_NAME="Мій сайт # не коментар"    → "Мій сайт # не коментар"

Пробіли у значенні вимагають лапок. APP_NAME=Laravel Ukraine без лапок обірветься на пробілі.

Підстановка ${VAR} працює лише для змінних, оголошених вище в тому ж файлі:

APP_URL=https://laravelukraine.com
MAIL_FROM="noreply@${APP_URL}"

Порожнє значення - це порожній рядок, а не null. CACHE_PREFIX= дасть "", і env('CACHE_PREFIX', 'default') поверне саме порожній рядок, бо значення технічно є.

Про маскування

Значення з KEY, SECRET, PASSWORD, TOKEN у назві показані лише початком. Інструмент відповідає на питання «чи розібрався рядок», а для цього повний секрет на екрані не потрібен - і не має там бути.

Кешування конфігу

Головна пастка на проді, і вона не про синтаксис.

php artisan config:cache

Після цієї команди env() перестає працювати поза файлами config/. Laravel читає закешований масив і більше не заглядає в .env.

// У config/services.php - правильно
'key' => env('STRIPE_KEY'),

// У контролері чи моделі - поверне null після config:cache
$key = env('STRIPE_KEY');

// Правильно скрізь поза config/
$key = config('services.stripe.key');

Це джерело класичного «на локалці працює, на проді null». Правило просте: env() тільки в config/, усюди інакше - config().

Що не має потрапляти в .env

.env не в git - це у .gitignore кожного Laravel-проєкту від першого дня. На проді значення зазвичай приходять зі змінних оточення платформи (Dokploy, Forge, Kubernetes secret), а не з файлу на диску.

І окремо: APP_DEBUG=true на проді показує стороннім повний стек винятку разом зі значеннями змінних - тобто й з вашими ключами. Це найдорожча однорядкова помилка в .env.

Сам APP_KEY можна згенерувати окремим інструментом.