Composer安装mongodb/mongodb报错求助(PHP 8.1.10)
安装MongoDB PHP扩展及Composer依赖问题解决
问题背景
我是Composer与MongoDB的新手,在命令提示符执行composer require mongodb/mongodb时遇到依赖报错,我的PHP版本是8.1.10。
报错信息
Cannot use mongodb/mongodb's latest version 1.13.1 as it requires ext-mongodb ^1.14.0 which is missing from your platform. In PackageDiscoveryTrait.php line 313: Package mongodb/mongodb has requirements incompatible with your PHP version, PHP extensions and Composer version: - mongodb/mongodb 1.13.1 requires ext-mongodb ^1.14.0 but it is not present.
已尝试的操作及结果
我试过以下命令,但问题未解决:
composer require mongodb/mongodb --ignore-platform-reqs composer require jenssegers/mongodb --ignore-platform-reqs
执行后输出:
Info from https://repo.packagist.org: #StandWithUkraine Using version ^1.13 for mongodb/mongodb ./composer.json has been updated Running composer update mongodb/mongodb Loading composer repositories with package information Updating dependencies Nothing to modify in lock file Installing dependencies from lock file (including require-dev) Nothing to install, update or remove Generating optimized autoload files > Illuminate\Foundation\ComposerScripts::postAutoloadDump > @php artisan package:discover --ansi INFO Discovering packages. jenssegers/mongodb ................................................................................. DONE laravel/sail ....................................................................................... DONE laravel/sanctum .................................................................................... DONE laravel/tinker ..................................................................................... DONE nesbot/carbon ...................................................................................... DONE nunomaduro/collision ............................................................................... DONE nunomaduro/termwind ................................................................................ DONE spatie/laravel-ignition ............................................................................ DONE 82 packages you are using are looking for funding. Use the `composer fund` command to find out more! > @php artisan vendor:publish --tag=laravel-assets --ansi --force INFO No publishable resources for tag [laravel-assets]. No security vulnerability advisories found
解决方法
1. 安装PHP的mongodb原生扩展
报错核心是缺少ext-mongodb扩展,这是PHP连接MongoDB的底层依赖,必须先安装,不能仅靠忽略平台需求绕过:
- Windows系统:
- 下载对应PHP 8.1.10版本、线程安全/非线程安全(TS/NTS)、对应架构(x64/x86)的
php_mongodb.dll文件 - 将文件放到PHP安装目录下的
ext文件夹中 - 打开
php.ini,添加一行extension=mongodb - 重启命令提示符,执行
php -m,查看输出中是否包含mongodb,确认扩展安装成功
- 下载对应PHP 8.1.10版本、线程安全/非线程安全(TS/NTS)、对应架构(x64/x86)的
- Linux系统:
执行sudo pecl install mongodb,安装完成后在php.ini中添加extension=mongodb.so,重启PHP服务后用php -m验证
2. 安装兼容版本的mongodb/mongodb包
如果暂时无法安装最新版ext-mongodb,可以指定安装与当前环境兼容的包版本:
- PHP 8.1可适配
mongodb/mongodb1.12.x版本(该版本要求ext-mongodb ^1.11.0) - 执行命令:
composer require mongodb/mongodb:^1.12
3. 关于jenssegers/mongodb的注意事项
jenssegers/mongodb是Laravel的MongoDB适配包,它依赖mongodb/mongodb,必须先解决原生扩展和基础包的依赖问题,再安装这个适配包。直接忽略平台需求安装会导致后续运行时出现致命错误。
内容的提问来源于stack exchange,提问作者Ray Paras
相关产品推荐
相关产品推荐

