AWS云实例PHP、MongoDB库更新及Laravel MongoDB连接报错求助
排查解决步骤
前置环境检查
- 确认AWS Linux实例的PHP MongoDB扩展版本:执行
php -i | grep mongodb,如果版本低于1.3 不支持mongodb+srv协议,是第二类报错的核心诱因 - 确认系统根证书包版本:AWS Linux默认根证书路径为
/etc/pki/tls/certs/ca-bundle.crt,旧版本证书会导致TLS校验失败,对应第一类报错
报错2:无法解析mongodb+srv连接串 修复步骤
- 升级PHP MongoDB扩展到最新稳定版:
- 执行
sudo yum install php-pear php-devel openssl-devel -y安装依赖包 - 执行
sudo pecl install mongodb安装最新版本扩展 - 编辑PHP配置文件(通常路径为
/etc/php.ini或者/etc/php.d/20-mongodb.ini),新增配置项extension=mongodb.so - 重启对应服务:
sudo systemctl restart php-fpm httpd,使用Nginx环境则同步执行systemctl restart nginx - 执行
php -m | grep mongodb确认扩展加载成功
- 执行
报错1:TLS证书校验失败 修复步骤
- 升级系统根证书包:执行
sudo yum update ca-certificates -y - 手动指定证书路径适配Laravel配置:打开
config/database.php,找到mongodb连接配置段,新增参数:'options' => [ 'ssl' => [ 'ca_file' => '/etc/pki/tls/certs/ca-bundle.crt', 'allow_invalid_hostname' => false, 'verify_peer' => true, 'verify_peer_name' => true, ] ] - 临时测试可关闭证书校验(不建议生产环境长期使用):将上方
verify_peer、verify_peer_name参数值改为false即可
Cron Job适配验证
- Cron运行时使用CLI模式PHP配置,执行
php -i | grep 'Loaded Configuration File'确认CLI模式加载的php.ini已开启mongodb扩展 - 手动触发Cron任务验证:执行
sudo -u 运行web服务的用户名 php /你的Laravel项目根路径/artisan 对应Cron任务命令,替换路径和命令即可验证连接是否正常 - 排查Cron日志定位异常:AWS Linux默认Cron日志路径为
/var/log/cron,可查看是否有权限、路径类报错
内容的提问来源于stack exchange,提问作者Anand
相关产品推荐
相关产品推荐

