2016-05-20 51 views
1

我是Ubuntu 16.04的新手。我想执行php 7和mongoDB 2.6连接。我谷歌很多,但我找不到任何正确的东西。任何人都可以一步一步地完成连接设置。另外我对ubuntu系统了解不多,所以请解释这些步骤。如果我的英文错误,我很抱歉。mongoDB和php的连接Ubuntu的16.04

回答

2

我安装在PHP PHP /转/驱动器去驱动---你CAND这里下载https://docs.mongodb.com/ecosystem/drivers/php/ 和PHP/php.ini中 - > 延长= php_mongodb

与PHP 7使用类似

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017"); 

$filter = []; 
$options = [ 
'projection' => ['_id' => 0], 
]; 

$query = new MongoDB\Driver\Query($filter, $options); 
$cursor = $manager->executeQuery('db.collection', $query); 
+0

其中php.ini文件,我要补充延长= php_mongodb(在阿帕奇/ php.ini中或CLI/php.ini中) –

2

我在ubuntu 16.04上使用php版本7.0。我提供了解决连接问题的详细信息。 首先我手动安装了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在系统启动时,请按照下列步骤操作:

创建文件mongodb.service在/ etc/systemd /系统/通过输入命令:

$ 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)安装蒙戈 - PHP驱动程序:

$ sudo pecl install mongodb 

你也可能会收到错误:phpize没有找到。 Phpize是一个用于创建构建环境的命令。这个错误可能在安装任何pecl扩展时出现。要解决未找到phpize命令的这个问题,用户必须安装php5-dev软件包。 要安装它,输入命令:php.ini文件中这是/etc/php/7.0/apache2目录

$ sudo apt-get install php7.0-dev 

然后,添加蒙戈DB扩展:

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

添加以下行中的文件:

extension = mongodb.so;

(只要你知道,文件mongodb.so的确切位置是在/usr/lib/php/20151012/mongodb.so。)

所以蒙戈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); 

对于fe tching数据:

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

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

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

感谢您的更新回答。虽然我用“extension = mongodb.so”而不是“mongo.so”。文件夹“/ usr/lib/php/20151012 /”是默认扩展文件夹,因此不需要明确指定。 – garyF

+0

我确认该库现在命名为'mongodb.so',因此我必须为此更新执行 – fillobotto

+0

Thanx @fillobotto。 –