安装PHP 7 MongoDB客户端/驱动程序?

时间:2015-12-28 01:51:40

标签: php mongodb php-7 php-mongodb

我非常渴望开始使用PHP 7但是有一个问题正在阻碍...我主要使用MongoDB作为数据库,问题是我不知道如何安装MongoDB驱动程序/客户端对于PHP 7。

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

有人可以推荐我如何在我的Mac或Ubuntu上安装它?

提前致谢,非常感谢!

13 个答案:

答案 0 :(得分:39)

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

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

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

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

您可以安装PECL / PEAR分机automatically

pecl install mongodb

manually

也已更改:

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

答案 1 :(得分:12)

支持PHP 7的MongoDB驱动程序仅为released December 22nd - 它可能是下游存储库,例如brew haven&t更新。

更新确认当前没有php70-mongo brew脚本,但有一个有效pull request来添加。

在此期间您可以install it manually via pecl

pecl channel-update pecl.php.net

pecl install mongodb

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

答案 2 :(得分:7)

如何在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)将以下内容添加到/etc/php/apache2/7.0

的php.ini文件中
extension=mongodb.so

重要 - 课程也已更改:

new MongoClient();  //Old Class

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

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

答案 3 :(得分:6)

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

sudo apt-get install php-mongodb

答案 4 :(得分:3)

答案 5 :(得分:2)

不,遗憾的是,旧版驱动程序不支持PHP7。这是正式定稿的the commitJIRA Ticket

可以找到新的PHP MongoDB驱动程序in PECL here(或GitHub)。

要安装,只需:

pecl channel-update pecl.php.net

pecl install mongodb

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

可以找到新驱动程序的文档here。我想在文档中加入一条说明:

  

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

新的mongodb驱动程序/ PHP扩展程序比旧版mongo驱动程序更低级,并且建议您在驱动程序之上使用更高级别的库而不是使用它直接在你的代码中。

Mongo PHP Libraryreleases)是PHP的官方高级库,它是建议在您的项目中使用的。它仍处于测试阶段,但这似乎仍然是PHP7最安全,最具前瞻性的前进道路。

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

答案 6 :(得分:2)

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

按如下方式使用:

sudo curl -sS https://raw.githubusercontent.com/zakhttp/Mongostead7/master/mongoHomestead7.sh | sudo sh

答案 7 :(得分:2)

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

1遵循本指南以安装灯https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-16-04(仅在安装mongo客户端时需要第三步)

2 $ sudo pecl install mongodb

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

4 {{1}}

  

在文件中添加以下行:

     

extension = mongo.so;

     

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

这就是安装php 7.0的mongo客户端

我正在补充Pransh Tiwari的答案

答案 8 :(得分:2)

我也几乎放弃了。对于适用于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);
?>

答案 9 :(得分:1)

这对我在Ubuntu for PHP7上有用:

sudo apt-get install php7.0-mongodb

答案 10 :(得分:1)

UBUNTU 16。4。4(07.12.2016)

安装PHP-MONGODB驱动程序:     Commandes:
                 - sudo pecl install mongodb                  - &GT; résultat:                         构建过程成功完成                         安装'/usr/lib/php/20151012/mongodb.so'                         安装ok:channel://pecl.php.net/mongodb-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个声望发布...

答案 11 :(得分:1)

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

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

Console (/SUBSYSTEM:CONSOLE)

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

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

$ 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

将以下内容粘贴到其中:

$ 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

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

$ sudo systemctl start mongodb

$ sudo systemctl enable mongodb

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

$ sudo pecl install mongodb

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

 $ sudo apt-get install php7.0-dev

在文件中添加以下行:

extension = 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/

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

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

将数据插入数据库:

$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);

答案 12 :(得分:0)

如果您正在努力让旧的PHP5代码与PHP7协同工作,那么您可能需要考虑的一个解决方案是https://github.com/alcaeus/mongo-php-adapter

我注意到在大多数情况下,包括适配器库是您需要做的所有事情,以便使用新的驱动程序/库方法在PHP7下正常运行旧的PHP5代码。

然后,我强烈建议您将代码迁移到新的MongoDB PHP库(https://github.com/mongodb/mongo-php-library),或者使用本机驱动程序从速度增益中受益。