在Ubuntu 18.04上安装Mongodb PHP驱动程序

3
我已经在新的Ubuntu 18.04服务器上安装了mongodb。我可以通过命令行访问和操作数据库,但无法通过PHP访问它,想知道其他人是如何使它工作的。
在安装LAMP后,我运行了以下命令: sudo apt install mongodb-server php-pear php7.2-dev sudo pecl install mongodb
然后我将mongodb.so扩展添加到php.ini文件中,并且phpinfo();页面显示已安装mongodb。到目前为止一切顺利。
如果我浏览测试PHP页面($mongo = new Mongo();),该页面无法加载。
通过网络搜索,我发现https://github.com/alcaeus/mongo-php-adapter经常出现,我已经运行了那里的composer安装命令,但没有成功。
安装版本为:Ubuntu 18.04.2 LTS; mongoDBv3.6.3; php 7.2.17; Apache 2.4.29
我想知道其他成功将PHP与Mongodb配合使用的人都采取了哪些步骤?我计划放弃这个服务器,重新安装一个全新的虚拟机。
3个回答

4
在添加了 ppa 仓库 ondrej/php 后,我成功安装了 php-mongodb 模块。
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt-get install php-mongodb

2
请在您的答案中添加一些解释,以便其他人可以从中学习 - php-mongodb 是常见的 Ubuntu 软件包列表的一部分,那么为什么还需要添加另一个存储库呢? - Nico Haase
在我的情况下,它没有起作用。只有当我添加了ppa存储库:ondrej/php后,我才能安装php-mongodb。 - gerMdz

3

尝试:

sudo apt-get install php-mongodb

对我有用。

0

看起来你正在尝试使用遗留驱动程序中的 Mongo 类,但是你正在使用非遗留驱动程序,因此该类不存在。请查看更新版本的驱动程序这里的文档。您还可以考虑使用MongoDB PHP Library来抽象许多驱动程序调用。

请注意,PHP库、MongoDB和MongoDB PHP驱动程序之间也存在兼容性考虑因素。您可以在这里找到它们的兼容性信息。


@user2165827 如果存在版本问题,仅运行composer install {package}将会适得其反。错误非常明显:您尝试安装的版本需要版本1.5.0,但您只有1.3.41.4.01.4.1。请再次查看兼容性表。如果您正在运行MongoDB 3.6,则需要驱动程序版本1.4.x1.5.x。如果您想安装PHP库,则需要库版本1.3.x和驱动程序版本1.4.x,或者需要库版本1.4.x和驱动程序版本1.5.x - B. Fleming
我运行了 composer require mongodb/mongodb:1.3.2,但是出现了错误信息:mongodb/mongodb 1.3.2 requires ext-mongodb ^1.4.0 -> the requested PHP extension mongodb has the wrong version (1.3.4) installed。所以我尝试安装版本1.4.0,但是出现了:mongodb/mongodb 1.4.0 requires ext-mongodb ^1.5.0 -> the requested PHP extension mongodb has the wrong version (1.3.4) installed.。当我尝试安装版本1.5.0时,出现了消息:Could not find package mongodb/mongodb in a version matching 1.5.0。有什么建议应该下一步怎么做? - user2165827
你显然遇到了已安装的扩展版本问题,因为它继续通知你仍在运行扩展版本 1.3.4。请确保卸载版本 1.3.4 并安装 1.4.x 版本的驱动程序。例如,你可以通过 pecl install mongodb-1.4.4 安装 1.4.4 版本。成功升级驱动程序版本后,请运行 composer require mongodb/mongodb:1.3.2composer 命令将安装 PHP 库,而不是驱动程序。请注意这一点。 - B. Fleming
好的,我运行了 sudo pecl uninstall mongodb 然后运行了 pecl install mongodb-1.4.4php -i | grep MongoDB 确认 MongoDB 扩展版本为 => 1.4.4,phpinfo() 页面也是如此。然后我运行了 composer require mongodb/mongodb:1.3.2,看起来成功了,没有任何错误信息。但是如果我浏览包含 $m = new Mongo(); 的 php 页面,页面仍然无法加载? - user2165827
@user2165827 我已经告知您,Mongo 类只存在于旧版驱动程序中。该类已不再存在。请查看 PHP Library documentation,其中注明了使用 MongoDB\Client 类的方法。还请注意,您需要通过 require 'your_mongodb_php_lib_location/vendor/autoload.php'; 来包含库。 - B. Fleming
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接