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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 14:17:39