Edited at

いいからやる。CentOS7 + PHP7 + mongoDB

More than 3 years have passed since last update.

PHP7からmongoDBを操作する環境をつくる。

案の定、詳細は先輩方の教えを参考に。

何も考えずこれだけやれば動作環境が手に入るよのメモ。

手順は、以下で作成したVM環境上で検証した

いいからやる。CentOS7 + Apache + MySQL + PHP7


mongoDBをインストールする

以下ルートユーザで作業


  • リポジトリを追加する

vi /etc/yum.repos.d/10gen.repo

[10gen]

name=10gen Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
gpgcheck=0
enabled=1


  • インストール

yum install mongo-10gen mongo-10gen-server


  • 起動する

service mongod start


  • 自動起動設定

chkconfig mongod on 


mongoDBにtest用のcollectionを作成する


  • DBを作成する

mongo test_db

use test_db


  • testというcollectionを作成する

db.createCollection('test');


  • collectionにドキュメントを追加する

db.test.insert( { name:'tanaka', address:'tokyo' } );


  • 確認


DB一覧表示

show dbs



collection一覧表示

show collections



全件表示(select)

db.test.find();



プロンプト終了

exit


スクリーンショット 2016-03-08 19.38.12.png


PHPからmongoDBを使えるようにする


  • Extensionの一覧を見る

yum --enablerepo=epel,remi,remi-php70 search php70


  • mongoDBのExtensionをインストールする

yum --enablerepo=epel,remi,remi-php70 install php70-php-pecl-mongodb


  • php.iniに設定を追加する

vi /etc/php.ini

extension=mongodb.so

(手元の環境ではextension_dirの設定ちゃんとしていないのでフルパスで)

(とにかく動く環境がほしいのだ)

extension=/opt/remi/php70/root/usr/lib64/php/modules/mongodb.so


  • 確認


httpd再起動

service httpd restart


phpinfo()にmongodbの情報が表示されていればOK

http://192.168.33.10/

Kobito.NF0P8U.png


サンプルPGで動作確認


  • サンプルPG


sample.php

<?php

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

// Insert
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['name' => '山田', 'address' => '東京']);
$manager->executeBulkWrite('test_db.test', $bulk);

// Select
//$filter = ['address' => ['$gt' => 'tokyo']]; // where句
$filter = [];
$options = [
'projection' => ['_id' => 0],
'sort' => ['_id' => -1],
];
$query = new MongoDB\Driver\Query($filter, $options);
$cursor = $manager->executeQuery('test_db.test', $query);

// Select 結果表示
foreach ($cursor as $document) {
var_dump($document);
}
?>



  • 実行結果

Kobito.0QOZoP.png


  • mongoDBの中身

Kobito.sQm9Rb.png


  • mongoDB Extensionのドキュメント

他の操作は以下を参考に実装していく

http://docs.php.net/manual/ja/book.mongodb.php


苦労したところ

php7のmongodb拡張は、インターネット上でよく紹介されているpecl install mongoではインストールができなかった。

どうしたらいいんだと、ドキュメント読んだり、ぐぐったりで小一時間・・・

現状は自PCに検証環境がほしいだけだったので深追いはしなかった。

本開発するときになったら、そのときはちゃんとする。

また、旧バージョンとは関数名や使い方が変わっていたりで、コード例も読み替えが必要だったりした。