$ 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 文件夹