Laravel 4: Class 'MongoClient' не найден

У меня есть Laravel 4, установленный на WAMP, и он отлично работает с бэкэндом MySQL.

Я успешно настроил второй виртуальный хост и хотел бы использовать бэкэнд MongoDB . После поиска я узнал, что Laravel не подключается к MongoDB, и я нашел https://github.com/jenssegers/Laravel-MongoDB, и я пытался его настроить, но я не могу понять, что это правильно. Очевидно, я должен что-то делать неправильно, и я надеюсь, что кто-то может помочь мне определить, что я делаю неправильно.

Я отредактировал composer.json соответствии с инструкциями:

 ............ "license": "MIT", "require": { "laravel/framework": "4.1.*", "jenssegers/mongodb": "*" }, "autoload": { ......... 

Затем я выполнил composer update . Он установил monolog 1.9.1 и swiftmailer v5.2.0 – что бы это ни было – успешно (несколько дней назад), но затем после этого сделал ошибку. Сегодня я снова попытался запустить composer update , и он обновил два до 1.10.0 и v5.2.1 соответственно, а затем столкнулся с той же ошибкой. Теперь, когда я пытаюсь composer update он последовательно выдает ту же ошибку:

 Nothing to install or update Generating autoload files {"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","me ssage":"Class 'MongoClient' not found","file":"C:\\wamp\\www\\laravel\\vendor\\j enssegers\\mongodb\\src\\Jenssegers\\Mongodb\\Connection.php","line":132}}Script php artisan clear-compiled handling the post-update-cmd event returned with an error [RuntimeException] Error Output: update [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--lock] [--no-plugins] [--no-custom-installers] [--no-scripts] [--no-progress] [--with- dependencies] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [packages1] ... [ packagesN] 

То, что я пробовал :

Я загрузил и установил php_mongo.dll, поместив его в папку php ext и включив его в php.ini:

 ; added for mongoDB connections extension=php_mongo.dll 

Но это не помогло.

ПРИМЕЧАНИЕ. Я бы не смог полностью решить проблему без помощи @Hassan – см. Комментарии в ответ @Hassan.

Я дам этот ответ в надежде, что он может помочь кому-то другому, кто может испытать ту же проблему. Я подумал, что лучше дать ему ответ, чтобы он выделялся.

Дальнейший поиск привел меня сюда: https://github.com/jenssegers/Laravel-MongoDB/issues/36 Затем здесь: https://github.com/leroy-merlin-br/mongolid-laravel#troubleshooting
Следующая команда и вывод указывают местоположение php.ini которое я должен был обновить с расширением php_mongo.dll :

 $ php -i | grep 'Configuration File' Configuration File (php.ini) Path => C:\Windows Loaded Configuration File => C:\wamp\bin\php\php5.5.12\php.ini 

Значок в лотке WAMP однако, указывает на C:\wamp\bin\apache2.4.9\bin\php.ini – это то, что я обновил. Я также проверил, правильно ли PHP в среде CLI импортирует драйвер, выполнив следующую команду с показанным результатом:

 $ php -i | grep 'Mongo' MongoDB Support => enabled 

После обновления правильного php.ini я restarted apache и снова попробовал composer update . Ошибка была иной – аутентификация – поскольку имя пользователя, пароль и база данных были неправильными. После исправления, обновление было завершено без каких-либо инцидентов.

Ваш файл композитора выглядит хорошо, как, вероятно, все остальное. Попробуйте « композитор dumpautoload », из документов:

Если вам необходимо обновить автозагрузчик из-за новых классов в пакете classmap, например, вы можете использовать «dump-autoload» для этого, не выполняя установку или обновление.

Это должно исправить эту ошибку, после чего вам нужно будет изменить ваш адаптер в app/config/database.php чтобы использовать mongodb следующим образом:

 'default' => 'mongodb', 

И добавьте mongodb в свои соединения:

 'connections' => array( ... 'mongodb' => array( 'driver' => 'mongodb', 'host' => 'localhost', 'port' => 27017, 'username' => '', 'password' => '', 'database' => 'test' ), ),