Перевірка .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 можна згенерувати окремим інструментом.
- Де виконується
- на сервері
- Категорія
- Laravel