Help us understand the problem. What is going on with this article?

XAMPP環境でMongoDBを扱う

More than 3 years have passed since last update.

はじめに

卒研生がMongoDBのインストールで詰まってるので手順書を書きます.MongoDB本体のインストールやパスなどは既に通っていると想定しています.

インストール作業

各種設定をする前に,必要な物をインストールしたり,データを入れたりします.

XAMPPのインストール

XAMPPのダウンロードサイトから,適当なXAMPPをダウンロードしてきてください.
https://osdn.jp/projects/xampp/

XAMPPは7zという圧縮ファイルになっているため,7-zipなどのアーカイバを使って解凍します.XAMPPの圧縮ファイルを解凍すると,xamppフォルダが新しく作られます.このフォルダは便宜的にCドライブ直下に入れてください.

xamppフォルダの中には,PHPやApache,MySQLなどが入っています.ですが,この状態だとインストールは完了していません.xamppフォルダにsetup_xampp.batが入っているので,それを実行してください.黒い画面が立ち上がってしばらくするとインストールが終わります.

MongoDBドライバのインストール

MongoDBドライバは,PHPのバージョンによって必要なファイルが異なります.なので,ダウンロードする前にPHPとMongoDBのバージョンを確認する必要があります.

まずはXAMPPを起動してください.XAMPPからApacheのサービスを立ち上げて,Adminをクリックしてください.

1.png

ブラウザが立ち上がり,XAMPPのダッシュボードが表示されます.上のメニューからPHPInfoをクリックしてください.

2.png

PHP Version ~とデカい文字で書いてあるので,そのバージョンを控えてください.この説明では,「PHP Version 5.6.14」と想定して説明を続けます.

PHPからMongoDBを動かすには,MongoDBドライバというものが必要です.MongoDBドライバは以下のサイトで配布しています.
http://pecl.php.net/package/mongo

サイトを開くと,MongoDBの各種バージョンが配布されています.ここでは「1.6.11」を例に説明します.

1.6.11の「田DLL」のリンクをクリックします.

3.png

PHPのバージョンは5.6なので,5.6 Thread Safe (TS) x86をクリックしてください.ダウンロードが開始されます.

2.png

MongoDBドライバを解凍すると,中にphp_mongo.dllが入っています.php_mongo.dllをC:\xampp\php\ext
にコピーしてください.

これでMongoDBドライバのインストールが完了です.

設定作業

php.iniでの設定

php.iniとは,PHPの設定ファイルのことです.php.iniはC:\xampp\phpに入っています.

php.iniを開くと,様々な設定が書いてあります.とりあえず,ファイルの一番最後に以下の内容を追加してください.

php.ini
extension=php_mongo.dll

この設定をすることで,Apache起動時にMongoDBドライバがロードされるようになります.

パスの設定

このまま,XAMPPからApacheをStop->Startしようとすると,libsasl.dllがないとか言われて動きません.libsasl.dllが必要なのに,Apacheがどこにあるのかわかっていないので,libsasl.dllの場所などを教えてあげる必要があります.

環境変数のパスの設定方法は知っていると仮定して説明します.以下のパスを環境変数Pathに追加してください.

C:\xampp\php\ext
C:\xampp\php

これで,Apacheを再起動してもエラーが出なくなります.

MongoDBドライバが正常に読み込まれてるか確認してください.PHPInfoで確認できます.

動作の確認

最後に動作の確認を行います.mongodコマンドを使ってMongoDBサーバを立ち上げてください.MongoDBサーバを立ち上げたら,データベースがちゃんと開いているかどうかmongoコマンドを使って確認してください.

次に,PHPで動作するかどうか確認します.
とりあえず,Apacheを再起動します
htdocsに以下のファイルを置いてください.

test.php
<?php

// MongoDBクライアントの作成
$mongo = new MongoClient();
echo "mongoのステータス<br>";
var_dump($mongo);
echo "<br><br>";

// データベースの中身を見る
echo "データベースのリスト<br>";
var_dump($mongo->listDBs());
echo "<br><br>";

// データベースの選択
$db = $mongo->selectDB("danbooru");
echo "データベースの情報<br>";
var_dump($db);
echo "<br><br>";

// コレクションの選択
$collection = $db->selectCollection("posts");
echo "コレクションの情報<br>";
var_dump($collection);
echo "<br><br>";

// 以下の2行は
// $db = $mongo->selectDB("danbooru");
// $collection = $db->selectCollection("posts");
// 下の1行と同じ意味です
// $collection = $mongo->selectCollection("danbooru", "posts");

echo "データの数:";
print $collection->count();
echo "<br><br>";
?>

エラーが出ずにデータの数が表示されたら完了です.

勉強方法

以下のサイトを参照してください.MongoDBの使い方が全部書いてあります.
http://php.net/manual/ja/mongo.core.php

GRGSIBERIA
なんでもやる人.元未踏クリエータ.三次元幾何学と音響工学を少々.
http://www.grgsiberia.net/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした