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

Posted

技术标签:

【中文标题】$ Composer 找不到 mongodb 扩展,需要 Mongodb 扩展【英文标题】:$ Composer can't find mongodb extension, required Mongodb extension 【发布时间】:2019-07-01 03:37:37 【问题描述】:

我在 macOS Mojave / macOS Big Sur / macOS Monterey 上使用最新的 php 版本 7.2 并收到类似的错误

 $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 -> 您的系统中缺少请求的 PHP 扩展 mongodb。 - mongodb/mongodb 1.5.x-dev 需要 ext-mongodb ^1.6 -> 您的系统中缺少请求的 PHP 扩展 mongodb。 - mongodb/mongodb 1.4.2 需要 ext-mongodb ^1.5.0 -> 您的系统中缺少请求的 PHP 扩展 mongodb。 - mongodb/mongodb 1.4.1 需要 ext-mongodb ^1.5.0 -> 您的系统中缺少请求的 PHP 扩展 mongodb。 - mongodb/mongodb 1.4.0 需要 ext-mongodb ^1.5.0 -> 您的系统中缺少请求的 PHP 扩展 mongodb。 **- mongodb/mongodb ^1.4 的安装请求 -> 可由 mongodb/mongodb[1.4.0, 1.4.1, 1.4.2, 1.5.x-dev, v1.4.x-dev] 满足。

安装失败,正在将 ./composer.json 还原为其原始内容。

我已经安装了 mongoDB 扩展仍然收到问题

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

【问题讨论】:

可能安装了多个 php 版本? CLI 版本与服务器不同? 嘿@Kalpesh-gamit,你是如何安装mongodb扩展的。提前致谢 【参考方案1】:

请检查是否安装了mongodb模块

php -m

进入安装目录并运行以下命令(需要一些时间)

composer 需要 mongodb/mongodb --ignore-platform-reqs

这将在 vendor 文件夹中安装 mongodb 所需的包。

【讨论】:

【参考方案2】:

使用 WAMP 时会发生此错误,因为 WAMP 和 CMD 有一个唯一的 php.ini。

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

您可以在 windows ENV 变量“路径”中确认您的 CMD PHP 版本 如果 CMD php 版本与您包含的版本不同 mongo-ext,您必须将 mongo-ext 安装到该版本的 PHP 中,或者更改路径变量以指向您当前使用的 PHP 版本 然后确保在您的 WAMP 和 CMD 版本的 php.ini 中都设置了 extension=php_mongodb

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

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

上述方法不正确,因为它会在未来与其他软件包、更新和/或安装产生问题。

【讨论】:

【参考方案3】:

composer 需要 mongodb/mongodb --ignore-platform-reqs

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

composer require jenssegers/mongodb --ignore-platform-reqs 它解决了我的问题。

【讨论】:

这个方法是否需要为任何其他包添加--ignore-platform-reqs作为composer解决依赖关系?【参考方案4】:

通过在终端上运行此命令来安装 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 服务。

【讨论】:

当我运行上面的命令然后收到“sudo: pecl: command not found” 没有 sudo 工作突击队但再次收到问题“pecl install mongodb” 就我而言,我使用的是 docker,我在 Dockerfile.dev 中使用了:RUN pecl install mongodb && docker-php-ext-enable mongodb

以上是关于$ Composer 找不到 mongodb 扩展,需要 Mongodb 扩展的主要内容,如果未能解决你的问题,请参考以下文章

OSX 10.10 PHP Composer 找不到所需的扩展 intl 和 mcrypt

即使已安装 Composer 也找不到 ext-mbstring

thinkphp5使用thinkImage生成缩略图时报找不到

安装 composer 后找不到 ~/.composer 文件夹

Composer 找不到配置文件:C:\composer 要初始化项目,请创建一个 composer.json 文件

PHP Composer 找不到任何类