2016-05-20 96 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。 –