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

Vik*_*mar 30 mongodb 16.04 php7

我正在运行 Ubuntu 16.04 LTS,我想在 PHP 中使用 Mongodb。为此我试过

sudo apt-get install php5-mongo
Run Code Online (Sandbox Code Playgroud)

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

E: Unable to locate package php5-mongo
Run Code Online (Sandbox Code Playgroud)

我刚刚将机器操作系统升级到Ubuntu 16.04 LTS并想mongodbPHP 7.0.4.

那么我能做些什么来解决这个问题?

Vid*_*uth 55

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

sudo apt-get install php-mongodb
Run Code Online (Sandbox Code Playgroud)

  • 这是如何为 php7 接受的答案?ubuntu 16.04 上的这个命令会安装 php5.6 mongo 不是吗? (2认同)
  • @Ligemer 16.04 将 php7.0 作为默认 PHP,因此所有元软件包都安装了上述软件包的 7.0 版本。 (2认同)
  • 安装软件包后不要忘记重新启动 Apache 服务器。 (2认同)

小智 8

我相信你现在已经找到了解决方案。但是我想分享我是如何做到的:


小智 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
Run Code Online (Sandbox Code Playgroud)

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

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

$ sudo nano /etc/systemd/system/mongodb.service
Run Code Online (Sandbox Code Playgroud)

在其中粘贴以下内容:

[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
Run Code Online (Sandbox Code Playgroud)

然后输入以下命令:

$ sudo systemctl start mongodb

$ sudo systemctl enable mongodb
Run Code Online (Sandbox Code Playgroud)

2) 安装 mongo-php 驱动:

$ sudo pecl install mongodb
Run Code Online (Sandbox Code Playgroud)

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

 $ sudo apt-get install php7.0-dev
Run Code Online (Sandbox Code Playgroud)

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

$ sudo nano /etc/php/7.0/apache2/php.ini 
Run Code Online (Sandbox Code Playgroud)

在文件中添加以下行:

扩展 = mongo.so;

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

因此 mongo db 与其驱动程序一起安装。

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

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

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

下面是一些基本的数据库操作命令:

$mng = new MongoDB\Driver\Manager(); // Driver Object created
Run Code Online (Sandbox Code Playgroud)

向数据库中插入数据:

$bulk = new MongoDB\Driver\BulkWrite;

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

$bulk->insert($doc);

$mng->executeBulkWrite('dbName.collectionName', $bulk);
Run Code Online (Sandbox Code Playgroud)

获取数据:

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

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

foreach ($rows as $row) 
    {
         echo "$row->data - $row->info\n";
    }
Run Code Online (Sandbox Code Playgroud)