You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP MVC项目集成Illuminate Database报错:Unsupported driver [] 求助

问题排查:Illuminate Database 连接报错 Unsupported driver []

错误信息

Fatal error: Uncaught InvalidArgumentException: Unsupported driver [] in C:\laragon\www\mvctest1\vendor\illuminate\database\Connectors\ConnectionFactory.php:286

相关配置代码

数据库类(App\Classes\Database)

<?php

namespace App\Classes;

use Illuminate\Database\Capsule\Manager as Capsule;

class Database
{
    public function __construct()
    {
        $db = new Capsule;
        $db->addConnection([
            'driver' => getenv('DB_DRIVER'),
            'host' => getenv('HOST'),
            'database' => getenv('DB_NAME'),
            'username' => getenv('DB_USERNAME'),
            'password' => getenv('DB_PASSWORD'),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => ''
        ]);

        // Make this Capsule instance available globally via static methods... (optional)
        $db->setAsGlobal();

        // Setup the Eloquent ORM... (optional; unless you've used setEventDispatcher())
        $db->bootEloquent();
    }
}

Bootstrap初始化文件

<?php
/**
 * 
 * Start session if not already started
 */
if(!isset($_SESSION)) session_start();

// load environment variables
require_once __DIR__ . '/../app/config/_env.php';

//instantiate database class
new \App\Classes\Database();

require_once __DIR__ . '/../app/routing/routes.php';

new \App\Routing\RouteDispatcher($router);

.env配置文件

APP_URL=http://mvctest1.test/
APP_ENV=local
APP_NAME="mvc test 1"

#database
DB_DRIVER='mysql'
DB_HOST=localhost
DB_NAME=store
DB_USERNAME=store
DB_PASSWORD=''

解决方案

  • 修正环境变量名称不匹配:数据库配置中host使用的是getenv('HOST'),但.env文件里对应的变量是DB_HOST,需修改为:

    'host' => getenv('DB_HOST'),
    
  • 处理.env文件的引号问题:当前.env里DB_DRIVER='mysql'的单引号会被当作值的一部分,导致获取到的driver是'mysql'而非mysql,甚至部分env加载脚本会解析失败。去掉所有值的引号:

    DB_DRIVER=mysql
    DB_PASSWORD=
    
  • 确保.env文件被正确加载:检查_env.php的实现,确保它能正确解析.env文件,以下是可靠的基础实现(替换原有内容):

    <?php
    $envPath = __DIR__ . '/../../.env'; // 确认路径是否指向你的.env文件
    if (file_exists($envPath)) {
        $lines = file($envPath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
        foreach ($lines as $line) {
            if (strpos(trim($line), '#') === 0) continue;
            list($key, $value) = explode('=', $line, 2);
            $key = trim($key);
            $value = trim($value);
            $value = trim($value, "'\""); // 移除首尾的单/双引号
            putenv("$key=$value");
            $_ENV[$key] = $value;
        }
    }
    
  • 验证环境变量是否生效:在Database类构造函数开头添加调试代码,确认变量是否正确获取:

    var_dump(
        getenv('DB_DRIVER'),
        getenv('DB_HOST'),
        getenv('DB_NAME')
    );
    exit;
    

    运行项目后查看输出,若仍为空,检查_env.php的引入路径是否正确。

  • 确认PHP数据库扩展已启用:确保Laragon环境中已启用pdo_mysql或mysqli扩展,可通过Laragon的「PHP」菜单快速启用,或通过phpinfo()查看扩展状态。

内容的提问来源于stack exchange,提问作者CodeWithVirag

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 19:24:10