Обновлено: Благодаря @ PedroFaria99, очистка кеша конфигурации решила проблему, но если кто-то хочет дать объяснение по поводу аспекта случайности, не стесняйтесь.
У меня проблема с моей локальной установкой laravel 5.5 (производственная среда не пострадала). Здесь Laravel используется как API и обслуживает клиентское приложение VueJS.
Иногда (случайным образом) мой laravel возвращает моему клиенту ошибку 500. Это может происходить на разных маршрутах, но никогда на одном и том же, после 1-10 последовательных HTTP-запросов или нет. а когда проверяю хранилище
[2018-03-09 13:44:08] production.ERROR: PDOException: SQLSTATE[HY000] [1045] Access Denied for user: 'forge'@'@localhost' (password: NO) in [...] Illuminate\Database\Connectors\Connector.php:119
Однако мой файл .env настроен, и мой файл database.php использует env () с параметрами по умолчанию "forge" и "localhost". Поэтому я попытался изменить этот параметр на «test», и следующие 500 ошибок были такими же, но с «test» вместо «forge».
Я очень запутался, так как эта ошибка не возникает систематически.
.env файл
APP_ENV=local
APP_DEBUG=true
DB_HOST=localhost
DB_DATABASE=mydatabase
DB_USERNAME=root
DB_PASSWORD=
database.php
...
'default' => env('DB_CONNECTION', 'mysql'),
...
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'test'),
'username' => env('DB_USERNAME', 'test'),
'password' => env('DB_PASSWORD', '')
...
Не думал об этом, так как это была случайность. Очистить кеш конфигурации вроде сработало. Спасибо ! Но есть ли представления о том, что это было довольно случайно?
не совсем, кажется, сервер иногда просто нервничает, не уверен
Я считаю, что вам нужно кэшировать его, поскольку он в значительной степени обновляет файл ./project/bootstrap/chache/config.php, который, кажется, содержит кешированные значения. Я верю, что он работает как резервная копия, на случай, если laravel не полностью загрузит файл .env перед загрузкой остальных автоматически загруженных файлов.
У меня такая же проблема, в итоге я установил одинаковую конфигурацию для обоих файлов, и проблема (очевидно) исчезла






Пытаться
php artisan cache:clear
php artisan config:cache
Это происходит из-за того, что laravel сохраняет значения env в своем кеше, и если ваша конфигурация не кэширована, она будет принимать конфигурацию, сохраненную в файле database.php. Вы не можете напрямую получить доступ к значениям env во время выполнения.
Ненавижу оживлять мертвый поток, но после некоторого душевного поиска я обнаружил, что проблема может заключаться в отсутствии безопасности потоков в php: https://github.com/laravel/framework/issues/28571 и отличное описание здесь: https://mattallan.me/posts/how-php-environment-variables-actually-work/
попробуйте ключ php artisan: сгенерируйте, чтобы увидеть, исправляет ли он, ну, возможно, вы захотите очистить кеш конфигурации