Проблема
Це досить поширена проблема, яка з’являється серед нових розробників Laravel.
Багато людей намагаються оновити свої .env, щоб побачити, що коли вони оновлюють свою програму, файл .Значення конфігурації env не відображаються.
І що цікавіше, досить часто це з’являється після оновлення вашої версії Laravel.
Так, наприклад, ви мали б це у своєму .env файл:
DB_DATABASE = laraveldbDB_USERNAME = laraveluser
Тоді, природно, всередині конфігурації / бази даних.php у вас буде такий:
'mysql' => ['база даних' => env ('DB_DATABASE', 'lar'),
'ім'я користувача' => env ('DB_USERNAME', 'lar'),
]
тут forge означає значення за замовчуванням. Це означає, що ці значення будуть використовуватися у випадку, якщо ви не вказали своє DB_DATABASE і DB_USERNAME значення всередині вашого .env файл. Ця інформація трохи допоможе.
Тепер, як ви знаєте, що у вас є ця конкретна проблема, якщо ви зіткнетеся з таким винятком:
PDOException: SQLSTATE [HY000] [1045] Заборонено доступ для користувача 'lar' @ 'localhost'(з використанням пароля: НІ)
Це наочно показує, що програма Laravel вводить значення за замовчуванням з вашого конфігурація / база даних.php файл, а не з вашого .env .
Перш ніж робити щось інше, ви також можете спробувати перевірити цю проблему, використовуючи також php artisan tinker:
>>> env ('DB_DATABASE')=> нуль
>>> getenv ('DB_DATABASE')
=> хибне
>>> config ('база даних.зв'язку.mysql.база даних ')
=> “Lar”
>>> dd ($ _ ENV)
[]
Ви часто бачите, що наступні дії теж не матимуть різниці. Однак розробники намагаються перевірити свою конфігурацію, запустивши абсолютно нову установку Laravel і просто скопіювавши стару папку програми. Вони не запускають жодну інсталяцію пакунків композитора або роблять щось інше.
Якщо ви не працюєте на Linux (трохи пізніше я скажу вам, чому), ви не побачите жодних змін.
Рішення
Як завжди, є багато речей, які ви можете зробити, щоб спробувати вирішити цю проблему, але деякі з них, швидше за все, досягнуть успіху.
Очистіть кеш конфігурації
По-перше, якщо ви цього не зробили, ви повинні очистити кеш конфігурації, перш ніж робити щось інше.
Оскільки наш код використовує стільки бібліотек сьогодні, ми змушені кешувати речі, щоб зробити швидкий доступ до них під час виконання.
У мене особисто були проблеми з цим у Windows та Mac, однак я помітив, що з якихось причин у Linux (Ubuntu) ці конфігураційні файли або очищаються якимось чином, або взагалі не кешуються, тому що я зміг перезавантажте додаток новим .значення env, не роблячи наступного.
Обов’язково очистіть кеш конфігурації, виконавши такі команди:
php artisan config: кешphp artisan config: clear
Перевірте наявність порожніх місць у вашому .env файл
Наступне рішення полягає в тому, щоб у вашому просторі були пробіли .env файл. І цей, якщо там, де більшість людей зазнає невдач і починає рвати волосся.
Це дуже легко пропустити, але як приклад те, що ви могли б мати у своєму .env приблизно такий:
SITE_NAME = Моя програма LaravelЦе одне не спрацює, оскільки пробіли пошкодять .env файл.
Що вам потрібно зробити, це обернути свої значення всередині лапок таким чином:
SITE_NAME = "Моя програма Laravel"Цього разу все повинно працювати нормально.
Просто не забудьте очистити кеш конфігурації кожного разу, коли ви вносите зміни. Ми можемо зробити це так само, як і раніше:
php artisan config: кешphp artisan config: clear