提问者:小点点

$Composer找不到mongodb扩展,需要mongodb扩展


我使用最新的PHP版本7.2在macOS Mojave/macOS大苏尔/macOS蒙特雷和接收错误,如

 $composer require mongodb/mongodb
Using version ^1.4 for mongodb/mongodb
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)

有关问题的更多信息:请参阅屏幕截图

无法将您的需求解析为可安装的软件包集。

问题1-mongodb/mongodb v1.4. x-dev需要ext-mongodb^1.5.0-

安装失败,恢复./composer.json到其原始内容。

不确定我错过了安装步骤。如果有人能帮我解决这个作曲家问题,我将不胜感激。提前谢谢。


共3个答案

匿名用户

编写器需要mongodb/mongodb——忽略平台需求

composer require mongodb/mongodb --ignore-platform-reqs
composer require jenssegers/mongodb --ignore-platform-reqs

Using version ^3.4 for jenssegers/mongodb
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 2 installs, 0 updates, 0 removals
  - Installing mongodb/mongodb (1.4.2): Downloading (100%)         
  - Installing jenssegers/mongodb (v3.4.5): Downloading (100%)         
jenssegers/mongodb suggests installing jenssegers/mongodb-session (Add MongoDB session support to Laravel-MongoDB)
jenssegers/mongodb suggests installing jenssegers/mongodb-sentry (Add Sentry support to Laravel-MongoDB)
Writing lock file
Generating optimized autoload files

作曲家需要jenssecers/mongodb--忽略平台reqs它解决了我的问题。

匿名用户

通过在终端上运行此命令来安装PHP扩展。

sudo pecl install mongodb

最后,您将看到以下信息。

Build process completed successfully
Installing '/usr/local/Cellar/php/7.3.3/pecl/20180731/mongodb.so'
install ok: channel://pecl.php.net/mongodb-1.5.3
Extension mongodb enabled in php.ini

然后重新启动PHP服务。

匿名用户

使用WAMP时会发生此错误,因为存在唯一的php。用于WAMP和CMD的ini。

因此,您可能已将mongo ext添加到WAMP php中。ini,因此它看起来好像正在运行并包含在已启用扩展的列表中。但是,这对命令行php不可用。ini,还需要确认正在运行的PHP的CMD版本

  • 您可以在windows ENV变量路径中确认您的CMD PHP版本
  • 如果CMD php版本与您包含的mongo-ext1版本不一样,您必须将mongo-ext2安装到PHP版本中,或者更改路径变量以指向PHP版本目前正在使用
  • 然后确保在WAMP和CMD版本的php.ini中设置了扩展=php_mongodb

为了确认您已经成功,您的mongo ext将显示在phpinfo()中,如果您在CMD上运行php-m,它将显示在呈现列表中

composer require jenssegers/mongodb --ignore-platform-reqs

上面的方法是不正确的,因为它会在将来的其他软件包、更新和/或安装中产生问题。