XAMPP環境でMongoDBを扱う

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

# インストール作業
各種設定をする前に，必要な物をインストールしたり，データを入れたりします．

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

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

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

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

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

![1.png](https://qiita-image-store.s3.amazonaws.com/0/32219/ceef1270-0bd5-d9bf-c79b-4004383d261f.png)

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

![2.png](https://qiita-image-store.s3.amazonaws.com/0/32219/7c3a4f8f-7d19-7128-5845-59c12d251379.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](https://qiita-image-store.s3.amazonaws.com/0/32219/d9308201-004c-a377-b347-20334d3b11db.png)

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

![2.png](https://qiita-image-store.s3.amazonaws.com/0/32219/5f8b7c4f-60ba-31a3-0c66-056791e68381.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を開くと，様々な設定が書いてあります．とりあえず，ファイルの一番最後に以下の内容を追加してください．

```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に以下のファイルを置いてください．

```php: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