Laravel 4: класс «MongoClient» не найден

4

У меня есть 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

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

Теги:

2 ответа

8
Лучший ответ

ПРИМЕЧАНИЕ: Я бы не смог полностью решить проблему без помощи @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. Ошибка была иной - аутентификация - поскольку имя пользователя, пароль и база данных были неправильными. Как только они были исправлены, обновление завершено без каких-либо инцидентов.

3

Ваш файл композитора выглядит отлично, как, вероятно, все остальное. Попробуйте " композитор 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'
    ),
),
  • 0
    Большое вам спасибо за ваше время и ваш ответ. Я запустил composer dump-autoload и он сказал « Generating autoload files и это было сделано. Затем я попытался composer update который выдает ту же ошибку, что и раньше.
  • 0
    Пожалуйста, смотрите редактирование, дайте мне знать, если это работает.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню