如何在Ubuntu 16.04 LTS中安装Mongodb PHP扩展


27

我正在运行Ubuntu 16.04 LTS,并且想将Mongodb与PHP结合使用。为此,我尝试了

sudo apt-get install php5-mongo

这对于Ubuntu 14.04 LTS足够了,但是我错了。我收到以下错误消息:

E: Unable to locate package php5-mongo

我刚刚升级了机操作系统Ubuntu 16.04 LTS,并想用mongodbPHP 7.0.4

那么我该怎么办呢?


我也尝试过此方法sudo apt-get install php7-mongo,但未得到任何积极的结果
Vikash Kumar

如果您想使用php5-mongo,请尝试一下sudo add-apt-repository ppa:chris-lea/mongodb-drivers sudo apt-get update sudo apt-get install php5-mongo
bhordupur

@bhordupur此存储库似乎无效。另外,您是否考虑过将其作为答案?W: The repository 'http://ppa.launchpad.net/chris-lea/mongodb-drivers/ubuntu xenial Release' does not have a Release file. N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use. N: See apt-secure(8) manpage for repository creation and user configuration details. E: Failed to fetch http://ppa.launchpad.net/chris-lea/mongodb-drivers/ubuntu/dists/xenial/main/binary-amd64/Packages 404 Not Found
Vivek Kodira

1
@VivekKodira不,我没有把它作为答案,因为Vicky R使用的是Ubuntu 16.04 LTS,默认情况下在执行此php-mongodb时安装了php7.x。我评论说由于他是14到16岁,但他仍然可以使用我上面的评论。这就是为什么我没有将我的评论作为答案。
bhordupur

Answers:


52

要安装mongodb扩展,请执行以下操作:

sudo apt-get install php-mongodb

2
这是如何接受php7的答案?在Ubuntu 16.04上的此命令将安装php5.6 mongo否?
Ligemer '17

2
@Ligemer 16.04将php7.0作为默认PHP,因此所有元软件包都安装了所述7.0版本。
Videonauth

嗯,是的,感谢您的提醒,我也从另一个PPA安装了php5.6,并且不是导致我出错的相同软件包。mongo的一些文档说要使用pecl扩展名,这是我最终使用的扩展名。
Ligemer '17

1
安装软件包后,请不要忘记重新启动Apache服务器。
TheKarateKid

可以对AWS Linux Ec2使用相同的命令吗?
151291 '18


6

我在ubuntu 16.04上使用php版本7.0。我正在提供有关安装mongo驱动程序/客户端的详细信息。首先,我手动安装了mongodb,然后为其安装了mongodb-php驱动程序。

1)安装mongo db。输入以下命令:

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

$ echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

$ sudo apt-get update

$ sudo apt-get install -y mongodb-org

为了正确启动Mongdb作为服务,即在系统启动时自动启动Mongodb,请执行以下步骤:

通过输入以下命令在/ etc / systemd / system /中创建文件mongodb.service:

$ sudo nano /etc/systemd/system/mongodb.service

在其中粘贴以下内容:

[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target

[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf

[Install]
WantedBy=multi-user.target

然后输入以下命令:

$ sudo systemctl start mongodb

$ sudo systemctl enable mongodb

2)安装mongo-php驱动程序:

$ sudo pecl install mongodb

另外,您可能会收到错误:找不到phpize。Phpize是用于创建构建环境的命令。在安装任何pecl扩展名时可能会出现此错误。要解决找不到phpize命令的问题,用户必须安装php5-dev软件包。要安装它,请输入命令:

 $ sudo apt-get install php7.0-dev

然后在/etc/php/7.0/apache2目录中的php.ini文件中,添加mongo db扩展名:

$ sudo nano /etc/php/7.0/apache2/php.ini 

在文件中添加以下行:

扩展名= mongo.so;

(您可能需要指定文件的确切位置。就我而言,该文件位于/usr/lib/php/20151012/mongodb.so中。)

因此,mongo db及其驱动程序已安装。

3)现在请记住,mongo-php类已更改。网络中的大多数可用资源都使用被替换的旧类提供了解决方案。您可以参考以下链接:

http://php.net/manual/zh/set.mongodb.php

http://zetcode.com/db/mongodbphp/

以下是一些用于基本数据库操作的命令:

$mng = new MongoDB\Driver\Manager(); // Driver Object created

要将数据插入数据库:

$bulk = new MongoDB\Driver\BulkWrite;

$doc = ["_id" => new MongoDB\BSON\ObjectID, "data" => $someData, "info" => $someInfo];

$bulk->insert($doc);

$mng->executeBulkWrite('dbName.collectionName', $bulk);

对于获取数据:

$query = new MongoDB\Driver\Query([]); 

$rows = $mng->executeQuery("dbName.collectionName", $query);

foreach ($rows as $row) 
    {
         echo "$row->data - $row->info\n";
    }

1

或PHP 7

sudo apt-get install php7.0-mongodb

我们已经安装了mongodb,但在浏览器上加载错误加载集的错误如下:错误:尚未安装或启用MongoDB PECL扩展
shivashankar m 17/08/23

0

我在我的Dockerfile上使用它:

echo 'deb http://packages.dotdeb.org jessie all' >> /etc/apt/sources.list
echo 'deb-src http://packages.dotdeb.org jessie all' >> /etc/apt/sources.list
curl -OL https://www.dotdeb.org/dotdeb.gpg \
    && apt-key add dotdeb.gpg \
    && rm dotdeb.gpg
apt-get update -y \
    && apt-get install -y \
        php7.0 \
        php7.0-mongodb \
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.