При выполнении следующего кода PHP:
$m = new MongoClient("mongodb://localhost:27017");
Я получаю следующую ошибку:
Неустранимая ошибка: класс «MongoClient» не найден в (…)
Расширение MongoDB кажется правильно установленным (я скопировал php_mongodb.dll в папку ext и обновил php.ini).
PHP, похоже, подтверждает, что расширение работает правильно, поскольку следующий код подтверждает, что он загружен:
echo extension_loaded("mongodb") ? "loaded\n" : "not loaded\n";
Кроме того, phpinfo()
показывает, что расширение mongodb было загружено.
ОБНОВИТЬ
Проблема еще не решена.
phpinfo()
ясно показывает, что драйвер загружен:
Но я все равно получаю ту же фатальную ошибку.
Класс MongoClient
является частью устаревшего пакета PECL mongo, но уже не является последним пакетом mongodb .
На MongoDB PHP-драйвер github repo, примечание к выпуску о версии 1.0.0, предлагает разработчикам использовать MongoDB\Driver\Manager
вместо MongoClient
Изменения в нашем устаревшем монго
Наиболее важно, что классы MongoClient, MongoDB и MongoCollection старого поколения были устарели с помощью класса MongoDB \ Driver \ Manager, который является новым шлюзом для подключения и выполнения запросов, команд и операций записи.
Источник: https://github.com/mongodb/mongo-php-driver/releases/tag/1.0.0
Как подсказывает документация, класс устарел.
Предупреждение Это расширение, определяющее этот класс, устарело. Вместо этого следует использовать расширение MongoDB. Альтернативы этому классу включают:
- MongoDB \ Driver \ Менеджер
Источник: http://php.net/MongoClient
Из того, что я читал в своей истории выпуска репозитория github , класс, который вы пытаетесь использовать, был устаревшим с версии mongodb 1.0.0
, поэтому в версии 1.6.0
этот класс не является частью dll
больше.
Это подтверждается этой проблемой на их github
derikr прокомментировал 16 апреля
MongoClient – это класс из старого старого драйвера и не должен быть доступен в этом. Новый драйвер имеет \ MongoDB \ Driver \ Manager, а в сопровождающей библиотеке \ MongoDB \ Client.
Вам нужно либо установить старое устаревшее расширение (pecl install mongo), либо использовать PHP 5.x, либо обновить свой код, чтобы использовать новые классы драйвера, поскольку старый драйвер недоступен для PHP 7. Существует руководство по обновлению по адресу http: //mongodb.github.io/mongo-php-library/upgrade-guide/
Источник: https://github.com/mongodb/mongo-php-driver/issues/300#issuecomment-210820288
Вот документация замещающего класса и фрагмент кода, который должен заменить ваш:
$m = new MongoDB\Driver\Manager("mongodb://localhost:27017");
Другой способ, предложенный членом MongoDB, приведенный выше, заключается в использовании этого расширения pecl: https://pecl.php.net/package/mongo вместо https://pecl.php.net/package/mongodb, но, пожалуйста, также обратите внимание на предупреждение:
Этот пакет был заменен, но по-прежнему поддерживается для ошибок и исправлений безопасности.