PHP
MongoDB
PHP7

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

More than 1 year has 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に検証環境がほしいだけだったので深追いはしなかった。
本開発するときになったら、そのときはちゃんとする。
また、旧バージョンとは関数名や使い方が変わっていたりで、コード例も読み替えが必要だったりした。