27
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-03-08

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のドキュメント

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

苦労したところ

php7のmongodb拡張は、インターネット上でよく紹介されているpecl install mongoではインストールができなかった。
どうしたらいいんだと、ドキュメント読んだり、ぐぐったりで小一時間・・・
現状は自PCに検証環境がほしいだけだったので深追いはしなかった。
本開発するときになったら、そのときはちゃんとする。
また、旧バージョンとは関数名や使い方が変わっていたりで、コード例も読み替えが必要だったりした。

27
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?