34

我非常渴望开始使用 PHP 7,但是遇到了一个问题……我主要使用 MongoDB 作为数据库,问题是我不知道如何为 PHP 7 安装 MongoDB 驱动程序/客户端.

我当前的安装是 PHP 5.6,在我的 Macbrew install php56-mongo上可以解决问题。

谁能推荐我如何在我的 Mac 或 Ubuntu 安装上使用它?

在此先感谢,非常感谢!

4

12 回答 12

46

PHP 5.99.99 或更早版本的 Mongo 扩展已被取代:

https://pecl.php.net/package/mongo

使用较新的 PHP 版本7.99.99或更早版本:

https://pecl.php.net/package/mongodb

您可以自动安装 PECL/PEAR 扩展:

pecl install mongodb

手动

课程也发生了变化:

new \MongoClient(); // legacy class!

http://php.net/manual/en/book.mongo.php

new \MongoDB\Driver\Manager(); // new classes! 

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

可在此处找到有关兼容性的其他信息:

https://docs.mongodb.org/ecosystem/drivers/php/#compatibility

于 2015-12-29T09:38:07.073 回答
15

支持 PHP 7 的 MongoDB 驱动程序仅在 12 月 22 日发布- 其可能的下游存储库(如 brew)尚未更新。

更新确认当前没有php70-mongobrew 脚本,尽管有一个活动的拉取请求来添加一个。

与此同时,您也许可以通过 pecl 手动安装它

pecl channel-update pecl.php.net

pecl install mongodb

echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
于 2015-12-28T02:04:56.890 回答
8

您可以尝试使用以下方法安装 mongodb 驱动程序:

sudo apt-get install php-mongodb
于 2017-06-26T16:36:18.353 回答
8

如何在 ubuntu 16.04 lts 中将 php 7.0 与 MongoDB 连接?

1) 使用以下链接安装 LAMP。它安装 Apache2、mysql 和 php 7.0。 https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-16-04

2) 使用以下链接中的步骤在 Ubuntu 上安装 MongoDB 社区版。 http://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

3) 键入以下命令从 pecl 获取 mongoDB 扩展

sudo apt install php-pear

4)将以下内容添加到 php.ini 文件中/etc/php/apache2/7.0

extension=mongodb.so

重要 - 课程也已更改:

new MongoClient();  //Old Class

new MongoDB\Driver\Manager(); // New Class

参考 - http://php.net/manual/en/set.mongodb.php

于 2016-08-08T16:08:39.820 回答
3

我也差点放弃了。对于 PHP 7x 的 MongoDB 驱动程序,Ubuntu 18.04 Pecl 将不起作用。相反,请尝试:

sudo apt-get install php-mongodb  

然后在项目文件夹的基础上安装 mongodb 库https://docs.mongodb.com/php-library/current/tutorial/install-php-library/

composer require mongodb/mongodb
composer install

它访问驱动程序提供的较低级别的功能。

最后,转到 php.ini 并添加

extension = mongo.so

并重新启动apache

要进行测试,请尝试将其添加到 php 文件中:

<?php
     require_once __DIR__ . "/vendor/autoload.php";
     $collection = (new MongoDB\Client)->test->users;
     print_r($collection);
?>
于 2019-01-22T02:59:16.247 回答
3

不,很遗憾,旧版驱动程序不支持 PHP7。这是正式完成的提交JIRA Ticket 。

新的 PHP MongoDB 驱动程序可在此处的 PECL(或GitHub)中找到。

要安装,只需:

pecl channel-update pecl.php.net

pecl install mongodb

echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`

可以在此处找到新驱动程序的文档。我想包含文档中的注释:

最终,此扩展不打算单独使用。用户应考虑将此驱动程序与一个或多个用户级 PHP 库(例如mongo-php-library )一起使用。

新的mongodb驱动程序/PHP 扩展比旧mongo驱动程序低级得多,鼓励您在驱动程序之上使用更高级别的库,而不是直接在代码中使用它。

Mongo PHP 库( releases ) 是 PHP的官方高级库,建议在您的项目中使用它。它仍处于 Beta 阶段,但这似乎仍然是 PHP7 最安全和最面向未来的前进道路。

有人可能会将旧版驱动程序移植到 PHP7,但可能不需要它,因为旧版驱动程序还有许多其他问题。

于 2016-01-04T02:59:49.000 回答
3
  • 首先我们需要通过这里提到的步骤在机器上安装MongoDB: https ://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
  • 下一步是安装 MongoDB 驱动程序以与 PHP 一起使用。
  • PHP 版本 5.99.99 或更早版本的 MongoDB 驱动程序是: https://pecl.php.net/package/mongo 安装我们需要使用:

    sudo apt-get install php-pear php5-dev

    sudo pecl 安装 mongo

  • 从 PHP 7 开始,这是新的驱动程序 https://pecl.php.net/package/mongodb要安装它,请使用:sudo pecl install mongodb

  • 如果您使用 Laravel 框架或带有 composer 的项目,那么这个库是最合适的一个: https ://github.com/jenssegers/Laravel-MongoDB 使用 3.0.0 版本来获得 PHP 7 和 Laravel 5 支持,否则使用旧版本 2.2.2 Composer 命令:

    作曲家需要 jensegers/mongodb

  • 如果您使用其他没有 composer 的 PHP 框架,请使用这个库:https ://github.com/mongodb/mongo-php-library ,上面提到的库中也使用了它

于 2016-02-23T14:14:24.060 回答
2

老问题,但新的优秀解决方案。只需使用Mongostead7自动脚本来安装所有需要的东西。为我工作得很好。不需要额外的工作。

按如下方式使用它:

sudo curl -sS https://raw.githubusercontent.com/zakhttp/Mongostead7/master/mongoHomestead7.sh | sudo sh
于 2016-09-06T12:48:35.353 回答
2

补充答案并发布对我有用的内容:

1 按照本指南安装灯https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-16-04(第三步仅用于安装 mongo 客户端)

2$ sudo apt-get install php7.0-dev

3$ sudo pecl install mongodb

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

在文件中添加以下行:

扩展 = mongo.so;

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

这就是为 php 7.0 安装 mongo 客户端的全部内容

我正在补充 Pransh Tiwari 的答案

于 2017-12-29T04:25:56.447 回答
1

Ubuntu 16.0.4 (07.12.2016)

安装 PHP-MONGODB 驱动程序: 命令:
- sudo pecl install mongodb -> résultat:构建过程成功完成-1.2.0 配置选项“php_ini”未设置为 php.ini 位置您应该将“extension=mongodb.so”添加到 php.ini

                    -> la librairie se trouve dans "/usr/lib/php/20151012/mongodb.so"
            - sudo systemctl restart apache2.service
            https://secure.php.net/manual/en/mongodb.installation.pecl.php
            - create 2 new files called "30-mongodb.ini" in both path to add the extension to your server:
                -/etc/php/7.0/fpm/conf.d/30-mongodb.ini
                -/etc/php/7.0/cli/conf.d/30-mongodb.ini
                Commandes :
                    sudo nano /etc/php/7.0/fpm/conf.d/30-mongodb.ini

                        -> add "extension=mongodb.so"

                    sudo nano /etc/php/7.0/cli/conf.d/30-mongodb.ini

                        -> add "extension=mongodb.so"


            - Test if the mongodb extension is running in your server :
                Commandes :
                    php --ini

安装 DoctrineMongoDBBundle: http ://symfony.com/doc/current/bundles/DoctrineMongoDBBundle/index.html,http : //www.doctrine-project.org/2016/06/09/odm-1-1-0-and -1-0-6.html ,

    Commandes :
        - cd
        - cd my_project_name
        - ls -a composer*
            -> résultat : composer.json  composer.lock
        - sudo nano composer.json
        - Add to the composer.json in "require" array
            "doctrine/mongodb-odm": "^1.0",
            "doctrine/mongodb-odm-bundle": "^3.0"
        - Add to the composer.json in "require" array
            "alcaeus/mongo-php-adapter": "^1.0",
            "ext-mongo": "*"
        - Add a new array :
            "provide": 
            {
                "ext-mongo": "1.6.12"
            }
        - Move 
        sudo cp -i /usr/lib/php/20151012/mongodb.so /etc/php/7.0/cli

为了提供解决方案,我需要至少 10 个声望才能发布...

于 2016-12-07T14:09:40.063 回答
1

这在 Ubuntu for PHP7 上对我有用:

sudo apt-get install php7.0-mongodb
于 2016-12-07T07:25:11.713 回答
1

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

1) 安装 mongo 数据库。输入以下命令:

$ 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/en/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";
    }
于 2017-04-04T17:18:21.670 回答