Kendi oluşturduğum middleware'da helper içerisinde ki checkDBConnection() metodu ile veritabanı kontrolü yapıyorum.
.env dosyasında veritabanı parametreleri girilmediği zaman middleware içerisinde ki !checkDBConnection() kontrolu ile istediğim sayfaya yönlendirmiyor fakat .env dosyasında veritatabanı parametrelerini girdiğim zaman giriş yapıyor.
.env dosyasnda boşken aşağıdaki yapı ile kurulum sayfasına yönlendimek istiyorum. Bu hatayı nasıl aşabilirim?
Hata :
mysqli_sql_exception
Access denied for user ''@'localhost' (using password: NO)
::mysqli_connect
C:\Users\lion\Desktop\apps\dingo8\app\Helper\helpers.php:21
21-> config('database.connections.' . env('DB_CONNECTION') . '.password'));
helpers.php
<?php
if (!function_exists('clearAllLogs')) {
function clearAllLogs()
{
Artisan::call('route:clear');
Artisan::call('config:clear');
Artisan::call('cache:clear');
Artisan::call('key:generate');
}
}
if (!function_exists('checkDBConnection')) {
function checkDBConnection()
{
$link = @mysqli_connect(
config('database.connections.' . env('DB_CONNECTION') . '.host'),
config('database.connections.' . env('DB_CONNECTION') . '.username'),
config('database.connections.' . env('DB_CONNECTION') . '.password'));
if ($link)
return mysqli_select_db($link, config('database.connections.' . env('DB_CONNECTION') . '.database'));
return false;
}
}
Lion.php -> Kendi Oluşturduğum Middleware
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use DB;
class Lion
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
if (checkDBConnection())
{
DB::connection()->disableQueryLog();
}
if(!checkDBConnection() && !$request->is('install'))
{
clearAllLogs();
return redirect()->route('install.index');
}
return $next($request);
}
}
Kernel.php
protected $middleware = [
\App\Http\Middleware\TrustHosts::class,
\App\Http\Middleware\TrustProxies::class,
\Fruitcake\Cors\HandleCors::class,
\App\Http\Middleware\PreventRequestsDuringMaintenance::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
**\App\Http\Middleware\Lion::class,**
];
.env dosyası parametreler olmadan
DB_CONNECTION=mysql
DB_HOST=
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=