2012-01-11 13 views
2

PHPとWAMPでMongoDBをセットアップしようとしています。以前はWAMP 64ビットがインストールされていましたが、PHPドライバはそれで動作しないので、アンインストールして32ビットをインストールしました。私はここからPHPドライバをダウンロードしました:http://downloads.mongodb.org/mongo-latest-php5.3vc9ts.zip、dllをextに入れ、php.iniに拡張機能を追加しました。MongoDB/PHP on WAMP - phpinfo vs php -i

私は(私はWAMPを起動したときにすべてのエラーを取得しますが、私のphpinfoませんが)モンゴがリストされて表示されていない、と私は

$m = new Mongo(); // connect 

のような単純なものにしようとすると、私はこのエラーを取得する:

私は、コマンドラインからPHPの-iを行うと

Build Date Aug 23 2011 11:47:20 
Compiler MSVC9 (Visual C++ 2008) 
Architecture x86 
PHP API  20090626 
PHP Extension 20090626 
Zend Extension 220090626 
Zend Extension Build API220090626,TS,VC9 
PHP Extension Build  API20090626,TS,VC9 

が、それは私を示しています

(!) Fatal error: Class 'Mongo' not found in C:\development\uswom\btf\test\mongo.php on line 3 

私のphpinfoは、この情報を表示しますそのモンゴがロードされます。

mongo 

MongoDB Support => enabled 
Version => 1.2.7- 

Directive => Local Value => Master Value 
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.long_as_object => 0 => 0 
mongo.native_long => 0 => 0 
mongo.no_id => 0 => 0 
mongo.utf8 => 1 => 1 

WAMPは、私がインストールされている唯一のPHPで、そして私のCLI PHPは、私のWAMPをするphpinfoでアップ一致していることを確認するために、私は、詳細を確認し、それらが一致:

します。C:\ Program Files(x86の)\ WAMP \ binに\ phpの\ php5.3.8 \ php.exeに

"PHPは" 私はそのコマンドラインはインストール私のWAMPからPHPを実行していることを示す。最後
Build Date => Aug 23 2011 11:47:20 
Compiler => MSVC9 (Visual C++ 2008) 
Architecture => x86 
PHP API => 20090626 
PHP Extension => 20090626 
Zend Extension => 220090626 
Zend Extension Build => API220090626,TS,VC9 
PHP Extension Build => API20090626,TS,VC9 

1)なぜCLI "php -i"がMongoが読み込まれているが、phpinfo()はロードされていないのでしょうか?

2)私の "新しいMongo()"呼び出しが、phpinfo()がMongoがロードされていることを表示していないのと同じ理由で失敗していると推測していますが、モンゴローディング問題。私はwamp/logs/apache_error.logをチェックし、起動時にエラーを表示しません。

ありがとうございます。

+0

私の答えはmongoの約64ビットのワンプです。 http://stackoverflow.com/questions/8891551/troubleshooting-mongo-not-found-and-php-mongo-dll-is-not-a-win32-application – Quan

答えて

4

あなたの質問は明確ではありません:phpinfo()ページのmongo拡張子が見えますか?

多くの場合、CLIはApache(phpinfo())と同じphp.iniを使用しないことがよくあります。

普通はphp-cli.iniという名前の編集用のphp.iniを探します。これはphp.iniと同じフォルダにある可能性があります。時には、それはc:\Windowsに位置しているので、注意深く見てください。

phpinfo()ページの "parsed php ini files"を使用すると、正しいファイルを編集できるようになります。

また、WAMPはインスタンスごとに多数のPHPエンジンを処理できるため、PHPのバージョンが1つだけインストールされていることを確認してください。

願っています!

更新:とは、リマインダとして、私はWAMPとMongoのPHP拡張と同様の問題を抱えていた各設定変更

+0

いいえ、mongoはphpinfoに表示されません( )ページ。また、意図的にC:\ Program Files(x86)\ wamp \ bin \ php \ php5.3.8 \ php.iniにあるmongo dllのスペルを間違えた場合、WAMPは起動時にポップアップエラーを表示するので、WAMP phpinfo()は私が変更したのと同じphp.iniを使用しています。 – JOV

+0

次に、phpinfo()の "解析されたphp iniファイル"を見つけ、_this_ファイルのmongo拡張子を有効にしてください。 –

+0

ビンゴ、それだった。 phpinfo()は、WAMP apache binフォルダのphp.iniを解析中であることを示しました。私はそのphp.iniを更新しました、そして今それはすべて良いです。ありがとうジャスティン! – JOV

2

でApacheサービスを再起動します。

私のApacheエラーログには、mongo .dllが/ extにありますが、窒息していることに気付きました。いくつかのトラブルシューティングの後、私はWAMPの64ビットバージョンを持っていたが、mongo php .dllは32ビットとしてGithubからのみ配布されていた。

私は64ビットの代わりに32ビットのディストリビューションを使ってWAMPを再インストールしました(mongoの拡張機能を64ビットの.dllとして構築できたと思います)。

次に、mongo phpのスレッドセーフなバージョンをインストールし、phpInfoサマリーにロードしました。これで、私はそれを解決した関数にアクセスできます。