我正在尝试在我的 VPS 上安装我的 Symfony 应用程序。我的应用程序使用 MongoDB 作为 noSQL 数据库。当访问该网站时,我得到
Class "MongoDB\Driver\Monitoring\CommandSubscriber" not found while loading "Doctrine\Bundle\MongoDBBundle\APM\StopwatchCommandLogger".
我用pecl安装了mongodb
在 php.ini 中添加了扩展名 = mongodb
我克隆了我的仓库
我运行了composer update,然后运行了composer install ->没有错误
然后我尝试访问我的应用程序并收到错误消息
Class "MongoDB\Driver\Monitoring\CommandSubscriber" not found while loading "Doctrine\Bundle\MongoDBBundle\APM\StopwatchCommandLogger".
我正在使用 php 8.2,mongodb 1.18
phpinfo 返回
MongoDB support => enabled
MongoDB extension version => 1.18.0
MongoDB extension stability => stable
libbson bundled version => 1.26.1
libmongoc bundled version => 1.26.1
phpinfo 输出
MongoDB support => enabled
类似于 php --ini
命令的输出或命令行界面(CLI SAPI) 中的
phpinfo()
函数调用的输出。然而,Web 服务器环境(例如 php-fpm、cgi 或 apache2handler SAPI)中的 phpinfo()
函数调用通常以 HTML 格式显示输出。
因此,我认为您正在修改Web服务器未使用的配置文件。您可以通过创建包含以下内容的 PHP 文件来找出 Web 服务器使用哪个 php.ini 文件:
<?php
phpinfo();
然后在网络浏览器中打开此文件并搜索
Loaded Configuration File
指令。该指令显示 Web 服务器使用的 php.ini 文件的路径。现代 Linux 发行版经常分割配置文件,因此您可能还需要检查“扫描此目录以获取其他 .ini 文件”指令下的目录。在 Ubuntu 上,它通常类似于 /etc/php/8.1/fpm/conf.d/
(根据您的 PHP 版本进行调整)。用户需要在该目录中创建一个类似 90-mongodb.ini
的文件,并使用 extension
指令,例如 extension=mongodb.so
。
更改配置文件后,需要重新启动SAPI服务(例如php-fpm服务)才能应用更改。