ZeBeVogue別館 このページをアンテナに追加 RSSフィード

2012年06月30日

MongoDBをMAMP環境のPHPで利用する

せっかくMongoDBを入れたので、MAMP環境のPHPでも使えるようにしてみます。

MAMPにはPHP5.3系と5.2系が入っています。それからOS XにもPHPが入っています。これをごっちゃにしたままにすると、不必要なextensionやpearが入ってしまい、後から混乱する原因になりますので、これを意識しつつextensionを入れていきます。

MAMPPHPにもpearおよびpeclは入っていますが、これを単に実行するとデフォルトで入っている設定を読み込んでしまうので、下記のように-cオプションを付けて実行します。

$ cd /Applications/MAMP/bin/php/php5.3.6/bin
$ ./pear -c ../conf/pear.conf <pear コマンド>
$ ./pecl -c ../conf/pear.conf <pecl コマンド>

以下のエラーが出る場合、下記のエントリからpearをちゃんと設定しておきます。

$ ./pecl
Notice: unserialize(): Error at offset 276 of 1227 bytes in Config.php on line 1050
ERROR: The default config file is not a valid config file or is corrupted.

MAMPのPEARを「ちゃんと」設定する方法(pearコマンドが動かないのを修正する方法) - ZeBeVogue別館

では早速っと、installコマンドでインストールしようとしてもコンパイルで失敗してしまいます。

$ ./pecl -c ../conf/pear.conf install mongo
...
/private/tmp/pear/temp/mongo/php_mongo.c:22:10: fatal error: 'php.h' file not found
#include <php.h>
         ^
1 error generated.
make: *** [php_mongo.lo] Error 1
ERROR: `make' failed

というのは、MAMP環境にはPHPのヘッダファイルが無いからです。

$ ls `./php-config --include-dir`
ls: /Applications/MAMP/bin/php/php5.3.6/include/php: No such file or directory

OS Xのものはありますが、バージョンが異なるため、やはり使えません。

$ ls `php-config --include-dir`
TSRM    Zend    ext     include main

という事で公式サイトから取って来るしかないです。

PHP: Releases

$ wget http://museum.php.net/php5/php-5.3.6.tar.bz2 && tar zxf php-5.3.6.tar.bz2
$ cd php-5.3.6
$ ./configure
...
+--------------------------------------------------------------------+
| License:                                                           |
| This software is subject to the PHP License, available in this     |
| distribution in the file LICENSE.  By continuing this installation |
| process, you are bound by the terms of this license agreement.     |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point.                            |
+--------------------------------------------------------------------+

Thank you for using PHP.

バイナリを作る必要はないので、configureだけでOKです。終わったら、このディレクトリ自体をincludeディレクトリに配置します。不要なファイルも入っていますが。

$ cd ..
$ mv php-5.3.6 /Applications/MAMP/bin/php/php5.3.6/include/php

これでドライバコンパイルできるようになります。

$ ./pecl -c ../conf/pear.conf install mongo
...
Build process completed successfully
Installing '/Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/mongo.so'
install ok: channel://pecl.php.net/mongo-1.2.10
configuration option "php_ini" is not set to php.ini location
You should add "extension=mongo.so" to php.ini

一応確認してみます。

$ ls `./php-config --extension-dir`/mongo*
/Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/mongo.so

ちゃんと出来上がっているようです。後はphp.iniに追加するだけです。

$ echo "extension=mongo.so" >> /Applications/MAMP/bin/php/php5.3.6/conf/php.ini
$ ./php -i | grep -i mongo
mongo
MongoDB Support => enabled
mongo.allow_empty_keys => 0 => 0
mongo.allow_persistent => 1 => 1
mongo.auto_reconnect => 1 => 1
mongo.chunk_size => 262144 => 262144
mongo.cmd => $ => $
mongo.default_host => localhost => localhost
mongo.default_port => 27017 => 27017
mongo.is_master_interval => 60 => 60
mongo.long_as_object => 0 => 0
mongo.native_long => 0 => 0
mongo.no_id => 0 => 0
mongo.ping_interval => 5 => 5
mongo.utf8 => 1 => 1

お疲れ様でした。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/zebevogue/20120630/1341020573
リンク元
人気の記事

はてなブックマーク - 人気エントリー - 『ZeBeVogue別館』

1. CentOS 5.8にNode.jsをインストール - ZeBeVogue別館
2. jQueryで複数のイベントを割り当てる - ZeBeVogue別館
3. meta の viewport - ZeBeVogue別館
4. MacでPutty形式の秘密鍵を変換する - ZeBeVogue別館
5. smarty で携帯絵文字 - ZeBeVogue別館
6. DropboxのDatastore APIをさっそく使ってみた - ZeBeVogue別館
7. ChromeでAccess-Control-Allow-Originを停止させつつ、別アプリとして動かす - ZeBeVogue別館
8. PhantomJSでスクリーンショットを撮る&HTML2PDF - ZeBeVogue別館
9. neu.Nodeを触ってみました - ZeBeVogue別館
10. Node.jsでAmazon S3にアップロードする方法 - ZeBeVogue別館
11. Twitter Bootstrapのカルーセルをキーボードとスワイプで操作 - ZeBeVogue別館
12. PHPで簡単XPath(ATOM/RSS1.0) - ZeBeVogue別館
13. ExpressJSでのバリデーション(express-validator) - ZeBeVogue別館
14. Node.js/PHPでの様々な文字列ハッシュの生成 - ZeBeVogue別館
15. ApacheとNode.jsを連携させる - ZeBeVogue別館
16. gruntでJavaScript/CSSを結合・minify - ZeBeVogue別館
17. Node.js/ExpressJSでのファイルのアップロード - ZeBeVogue別館
18. PDFKitを使ってNode.jsからPDFを作成する - ZeBeVogue別館
19. node.jsからPhantomJSを使ってPDFを生成する - ZeBeVogue別館
20. node.jsのMVCフレームワークSails.jsを使ってみた - ZeBeVogue別館
21. Expressのルーティングの自動化(Node.js) - ZeBeVogue別館
22. ZeBeVogue別館
23. PhalconのWebToolsを使ってみる - ZeBeVogue別館
24. nodemailerでNode.jsからメールを送る - ZeBeVogue別館
25. yumでpgpool-IIをインストール - ZeBeVogue別館
26. reveal.jsで格好いいプレゼンを作ってみた - ZeBeVogue別館
27. Titaniumでadmobを利用する(Android編) - ZeBeVogue別館
28. Firefox OSでサンプル作ってみた - ZeBeVogue別館
29. WebViewのクリックイベントをTitaniumへ渡す - ZeBeVogue別館
30. YSlow for Firebugを日本語で便利に使う - ZeBeVogue別館