2016-11-23 80 views
0

我開始使用Yii2,我想將它與Mongodb連接起來。 所以我試圖按照這兩個網站文件的指示。Yii2上無法連接MongoDB ['Class'MongoDB Driver Manager'找不到']

而且看起來一切都很好,因爲我已經在正常的本地主機上做了一個簡單的測試,並且它工作正常。

但是當我想在Yii2高級模板上測試它時,我無法連接Yii2和Mongodb。

它總是說的錯誤:

PHP Fatal Error 'yii\base\ErrorException' with message 'Class 'MongoDB\Driver\Manager' not found' 
in /Applications/MAMP/htdocs/yii/yii2-advanced/vendor/yiisoft/yii2-mongodb/Connection.php:355 

這裏就/yii2-advanced/frontend/web/index-test.php的代碼,我使用:

<?php 
// NOTE: Make sure this file is not accessible when deployed to production 
if (!in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1'])) { 
    die('You are not allowed to access this file.'); 
} 

defined('YII_DEBUG') or define('YII_DEBUG', true); 
defined('YII_ENV') or define('YII_ENV', 'test'); 

require(__DIR__ . '/../../vendor/autoload.php'); 
require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php'); 
require(__DIR__ . '/../../common/config/bootstrap.php'); 
require(__DIR__ . '/../config/bootstrap.php'); 

$mongodb = new MongoClient("mongodb://root:[email protected]:27017/yii2advanced"); 
$users = $mongodb->yii2advanced->users; 
$user = $users->findOne(); 
print_r($user); 

$config = require(__DIR__ . '/../config/test-local.php'); 

(new yii\web\Application($config))->run(); 

PS:

  • 我在Mac上使用MAMP PRO。

  • 當我對htdocs/index.php進行測試時,我可以得到$ user的好結果。

  • 對不起我的英文不好。

+0

是mongo extenstion在您的服務器啓用? – yafater

+0

你爲什麼試圖在你的索引中連接到Mongo? 您必須安裝擴展,然後將其配置到您的配置文件中,然後在您的命名空間中根據需要使用MongoDb擴展,畢竟您可以在模型和控制器中使用它,但是您不得在索引文件中定義任何內容。 – sobbe

+0

我只是做了一個測試。 –

回答

0

後,我搜索,並按照互聯網上的許多指令, 我發現下面的鏈接是針對新版的安裝非常有用。

https://開頭docs.mongodb.com/master/tutorial/install-mongodb-on-os-x/?_ga=1.258923597.615822406.1480144338

https://bigseadesign.com/web-development/how-to-install-mongo-php-osx-mamp/

https://www.hugethoughts.com/blog/setup-mongodb-mamp-5-minutes/

但我會注意到,當你想在php.ini配置 上添加extension = mongodb.so我建議你檢查並安裝MongoDB PHP驅動程序的正確路徑,因爲,

當我安裝了 「MongoDB的PHP驅動程序」 通過BREW

(HTTP:// php.net/manual/en/mongodb.installation.homebrew.php)

運行在Mac Os,他們將它安裝這個路徑:

/usr/local/opt/phpXX-mongodb/ 

您MAMP所以php.ini文件必須調用蒙戈extention是這樣的:

extension=/usr/local/opt/php56-mongodb/mongodb.so 

順便說一句, 請注意,新的 「MongoDB的PHP驅動程序」 是「的mongod b.so「 不是」mongo.so「,因爲mongo.so已經被棄用了。