Symfony报Class 'MongoDB\Client' not found Nginx服务器排查
Symfony 环境报
MongoDB\Client 类不存在排查步骤 核心问题根源
本地Apache环境与线上Nginx环境的PHP运行上下文不一致,已安装的mongodb扩展没有被线上Nginx对应的PHP进程加载,最终触发类未找到的报错。
逐一排查动作
- 核对PHP运行环境版本差异
- 执行
php -v查看CLI环境的PHP版本、安装路径 - 执行
ps aux | grep php-fpm查看Nginx实际调用的PHP-FPM进程对应的版本路径
Ubuntu环境常存在多版本PHP共存的情况,直接执行全局pecl install mongodb只会为CLI对应的PHP版本安装扩展,PHP-FPM使用的PHP版本并未安装对应扩展
- 执行
- 校验扩展配置匹配性
- 执行
php -m | grep mongodb确认CLI环境下mongodb扩展是否正常加载 - 检查PHP-FPM对应的配置目录(常规路径为
/etc/php/[FPM版本号]/fpm/conf.d/),确认是否存在指向mongodb.so的配置文件 - 若CLI的conf.d目录下存在mongodb扩展配置、但FPM的conf.d目录下没有,手动将该配置文件软链到FPM的对应目录,保证FPM进程能识别到扩展配置
- 执行
- 重载服务让配置生效
配置调整完成后,必须执行sudo systemctl reload php[对应FPM版本]-fpm重载PHP-FPM服务,仅重启Nginx不会让PHP侧的配置生效 - 校验项目自动加载逻辑
在线上项目根目录执行composer dump-autoload重新生成类映射,确保jenssegers/mongodb的命名空间能被正确识别
注意:jenssegers/mongodb是MongoDB的ORM适配层,不会内置MongoDB\Client类的实现,必须依赖pecl安装的mongodb底层扩展才能运行,不能仅通过composer安装包跳过扩展部署 - 检查文件权限
确认mongodb.so扩展文件的权限为所有用户可读,避免PHP-FPM运行用户(通常为www-data)因权限不足无法加载扩展
内容的提问来源于stack exchange,提问作者Abhra Sarkar
相关产品推荐
相关产品推荐

