ans-group / laravel-health-check

A package for checking the health of your Laravel & Lumen applications
https://ukfast.co.uk/open-source.html
MIT License
159 stars 45 forks source link

Lumen 7.1.0 - Database connection [default] not configured #7

Closed RootPrivileges closed 4 years ago

RootPrivileges commented 4 years ago

What is the issue?

Out of the box, this package errors on Lumen 7.1.0 as it attempts to check for a database connection in the array named "default", rather than using the default connection.

Steps To Reproduce

  1. Install Lumen 7.1.0 (current) using composer create-project --prefer-dist laravel/lumen
  2. Install laravel-health-check using composer require ukfast/laravel-health-check
  3. Add $app->register(\\UKFast\\HealthCheck\\HealthCheckServiceProvider::class); to bootstrap/app.php
  4. Run artisan vendor:publish --provider="UKFast\HealthCheck\HealthCheckServiceProvider" to create config/healthcheck.php
  5. Open http://<IP>/health and get the following error:
    {"status":"PROBLEM","log":{"status":"OK"},"database":{"status":"PROBLEM","message":"Could not connect to db","context":{"connection":"default","exception":{"error":"Database connection [default] not configured.","class":"InvalidArgumentException","line":152,"file":"\/var\/www\/vendor\/illuminate\/database\/DatabaseManager.php","trace":["#0 \/var\/www\/vendor\/illuminate\/database\/DatabaseManager.php(115): Illuminate\\Database\\DatabaseManager->configuration()","#1 \/var\/www\/vendor\/illuminate\/database\/DatabaseManager.php(86): Illuminate\\Database\\DatabaseManager->makeConnection()","#2 \/var\/www\/vendor\/ukfast\/laravel-health-check\/src\/Checks\/DatabaseHealthCheck.php(25): Illuminate\\Database\\DatabaseManager->connection()","#3 \/var\/www\/vendor\/ukfast\/laravel-health-check\/src\/Controllers\/HealthCheckController.php(19): UKFast\\HealthCheck\\Checks\\DatabaseHealthCheck->status()","#4 [internal function]: UKFast\\HealthCheck\\Controllers\\HealthCheckController->UKFast\\HealthCheck\\Controllers\\{closure}()","#5 \/var\/www\/vendor\/illuminate\/support\/Collection.php(638): array_map()","#6 \/var\/www\/vendor\/ukfast\/laravel-health-check\/src\/Controllers\/HealthCheckController.php(20): Illuminate\\Support\\Collection->map()","#7 [internal function]: UKFast\\HealthCheck\\Controllers\\HealthCheckController->__invoke()","#8 \/var\/www\/vendor\/illuminate\/container\/BoundMethod.php(33): call_user_func_array()","#9 \/var\/www\/vendor\/illuminate\/container\/Util.php(36): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()","#10 \/var\/www\/vendor\/illuminate\/container\/BoundMethod.php(91): Illuminate\\Container\\Util::unwrapIfClosure()","#11 \/var\/www\/vendor\/illuminate\/container\/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod()","#12 \/var\/www\/vendor\/illuminate\/container\/Container.php(592): Illuminate\\Container\\BoundMethod::call()","#13 \/var\/www\/vendor\/laravel\/lumen-framework\/src\/Concerns\/RoutesRequests.php(376): Illuminate\\Container\\Container->call()","#14 \/var\/www\/vendor\/laravel\/lumen-framework\/src\/Concerns\/RoutesRequests.php(319): Laravel\\Lumen\\Application->callControllerCallable()","#15 \/var\/www\/vendor\/laravel\/lumen-framework\/src\/Concerns\/RoutesRequests.php(278): Laravel\\Lumen\\Application->callControllerAction()","#16 \/var\/www\/vendor\/laravel\/lumen-framework\/src\/Concerns\/RoutesRequests.php(258): Laravel\\Lumen\\Application->callActionOnArrayBasedRoute()","#17 \/var\/www\/vendor\/laravel\/lumen-framework\/src\/Concerns\/RoutesRequests.php(416): Laravel\\Lumen\\Application->Laravel\\Lumen\\Concerns\\{closure}()","#18 \/var\/www\/vendor\/laravel\/lumen-framework\/src\/Concerns\/RoutesRequests.php(259): Laravel\\Lumen\\Application->sendThroughPipeline()","#19 \/var\/www\/vendor\/laravel\/lumen-framework\/src\/Concerns\/RoutesRequests.php(165): Laravel\\Lumen\\Application->handleFoundRoute()","#20 \/var\/www\/vendor\/laravel\/lumen-framework\/src\/Concerns\/RoutesRequests.php(416): Laravel\\Lumen\\Application->Laravel\\Lumen\\Concerns\\{closure}()","#21 \/var\/www\/vendor\/laravel\/lumen-framework\/src\/Concerns\/RoutesRequests.php(171): Laravel\\Lumen\\Application->sendThroughPipeline()","#22 \/var\/www\/vendor\/laravel\/lumen-framework\/src\/Concerns\/RoutesRequests.php(108): Laravel\\Lumen\\Application->dispatch()","#23 \/var\/www\/public\/index.php(28): Laravel\\Lumen\\Application->run()","#24 {main}"]}}},"env":{"status":"OK"}}

Expected behaviour

Code should work out of the box on default install (providing DB_ .env variables are correctly set):

{"status":"OK","log":{"status":"OK"},"database":{"status":"OK"},"env":{"status":"OK"}}

Possible fixes

Use empty string in $connection when using default database. Pull request attached in #8

tylerwoonton commented 4 years ago

Tagged at v1.0.4

Thanks for the contribution @RootPrivileges!