Laravel连接Azure Cosmos MongoDB遇SCRAM错误:salt长度无效(16)
解决Laravel连接Azure Cosmos MongoDB的SCRAM盐长度错误问题
针对你遇到的PHP Laravel MongoDB SCRAM Failure: invalid salt length of 16 in sasl step2错误,这是Azure Cosmos DB的Mongo API与PHP MongoDB驱动的兼容性问题导致的,以下是可落地的解决步骤:
升级PHP MongoDB扩展版本
这个错误大多出现在MongoDB扩展1.15.0以下的版本,旧版本对Cosmos DB返回的SCRAM盐长度处理不兼容。执行php -i | grep mongo查看当前扩展版本,若低于1.15.0,直接升级到最新稳定版(比如1.16.x)。调整Laravel数据库配置
在config/database.php的MongoDB连接配置中,明确指定authSource为admin,补充必要的选项:'mongodb' => [ 'driver' => 'mongodb', 'dsn' => env('DB_URI'), 'database' => env('DB_DATABASE'), 'options' => [ 'authSource' => 'admin', 'tls' => true, 'authMechanism' => 'SCRAM-SHA-256', ], ],注意你的连接URI已经包含了部分参数,这里补充的
authSource是Cosmos DB要求的关键配置。验证环境变量与清除缓存
确保.env文件中的DB_URI和Studio 3T使用的完全一致,没有多余的转义或换行。之后执行以下命令清除Laravel缓存:php artisan config:clear php artisan cache:clear重启你的Web服务(比如Nginx或Apache),确保配置生效。
更新Laravel MongoDB包
如果你使用的是mongodb/laravel-mongodb官方包,确保版本在4.0以上,新版本针对Azure Cosmos做了兼容性优化。可以通过Composer更新:composer require mongodb/laravel-mongodb:^4.0
内容的提问来源于stack exchange,提问作者Khalid Mushtaq
相关产品推荐
相关产品推荐

