Laravel 7.0 集成 MongoDB 与 Jensseger 运行异常求助
解决方案
1. 解决Symfony String组件语法错误
你遇到的PHP Parse error: syntax error, unexpected '='是因为Symfony String组件默认拉取了仅支持PHP7.4+的版本,其中用到了PHP7.2不兼容的空合并赋值运算符??=。需要在composer.json中锁定适配PHP7.2的依赖版本:
- 打开
composer.json,添加或修改config部分:"config": { "platform": { "php": "7.2.24" } } - 在
require部分指定兼容的包版本约束:"require": { // 保留原有Laravel等依赖,新增或修改: "symfony/string": "^4.4", "jenssegers/mongodb": "3.6.*", "mongodb/mongodb": "1.3.*" } - 执行命令更新依赖:
composer update
2. 匹配Jenssegers MongoDB与扩展版本
你的ext-mongodb版本是1.3.4,对应兼容关系如下:
jenssegers/mongodb 3.6.x:支持Laravel 7.x,且要求mongodb/mongodb ^1.3mongodb/mongodb 1.3.x:完全适配ext-mongodb 1.3.x
上述composer.json的配置已经锁定了这两个包的版本,执行composer install即可解决依赖不兼容问题。
3. 可选:升级ext-mongodb以使用更高版本的MongoDB客户端
如果想使用更新的MongoDB功能,可以升级ext-mongodb到1.5.x版本(适配PHP7.2):
sudo pecl install mongodb-1.5.5
修改php.ini文件添加extension=mongodb.so,重启PHP服务后,可将composer.json中的依赖改为:
"jenssegers/mongodb": "3.8.*", "mongodb/mongodb": "1.6.*"
再执行composer update即可。
4. 验证连接
完成依赖安装后,配置.env中的MongoDB连接信息:
DB_CONNECTION=mongodb DB_HOST=127.0.0.1 DB_PORT=27017 DB_DATABASE=your_database_name DB_USERNAME= DB_PASSWORD=
清理配置缓存并启动服务:
php artisan config:clear php artisan serve
内容的提问来源于stack exchange,提问作者bestfirstsearch
相关产品推荐
相关产品推荐

