Laravel7+PHP7.4环境下Unsupported driver [mongodb]问题求助
解决Laravel 7连接MongoDB时的
Unsupported driver [mongodb]错误 1. 确认包版本兼容性
Laravel 7必须搭配jenssegers/laravel-mongodb的3.6.x版本(3.7及以上版本仅支持Laravel 8+),执行安装命令:
composer require jenssegers/mongodb:3.6.*
安装后可通过composer show jenssegers/mongodb确认版本是否正确。
2. 修正配置文件设置
注册服务提供者与别名
编辑config/app.php:
- 在
providers数组末尾添加:Jenssegers\Mongodb\MongodbServiceProvider::class, - 在
aliases数组添加:'MongoDB' => Jenssegers\Mongodb\Facades\MongoDB::class,
配置数据库连接
编辑config/database.php:
- 在
connections数组中新增MongoDB配置:'mongodb' => [ 'driver' => 'mongodb', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', 27017), 'database' => env('DB_DATABASE', 'your_db_name'), 'username' => env('DB_USERNAME', ''), 'password' => env('DB_PASSWORD', ''), 'options' => [ 'database' => 'admin' // 指定认证数据库,默认为admin ] ], - 将默认数据库连接改为
mongodb:'default' => env('DB_CONNECTION', 'mongodb'),
3. 清除配置缓存
修改配置后必须清除缓存,避免旧配置残留:
php artisan config:clear php artisan cache:clear
生产环境需额外重启PHP-FPM或Web服务(Apache/Nginx),确保配置生效。
4. 验证环境依赖
- 确认PHP扩展正常加载:
输出需包含php -m | grep mongodbmongodb(注意是新的mongodb扩展,而非已废弃的mongo扩展)。 - 检查MongoDB服务状态:
若未运行,启动并设置开机自启:sudo systemctl status mongodsudo systemctl start mongod sudo systemctl enable mongod - 确认PHP-CLI与PHP-FPM使用的
php.ini均启用了mongodb扩展:
两个文件中需均存在# 查看FPM配置文件路径 php-fpm7.4 -i | grep "Loaded Configuration File" # 查看CLI配置文件路径 php -i | grep "Loaded Configuration File"extension=mongodb.so配置。
5. 调整迁移文件
使用MongoDB迁移时,需让迁移类继承MongoDB专属的基类:
use Jenssegers\Mongodb\Migration; class CreateUsersCollection extends Migration { public function up() { $this->collection('users')->create([ 'name' => 'string', 'email' => 'string', ]); } }
内容的提问来源于stack exchange,提问作者ov-uniathena
相关产品推荐
相关产品推荐

