libreria - mongodb php 7.2 extension
Class ''MongoClient'' no encontrado (7)
Estoy tratando de hacer que este código se ejecute:
<?php
$m = new MongoClient("mongodb://54.72.237.242");
$db = $m->tilbud;
?>
Cada vez que tengo el mismo error:
Fatal error: Class ''MongoClient'' not found in C:/xampp/htdocs/conexion.php
He estado leyendo sobre este problema todo el día, pero cualquier cosa resuelve mi problema (creo que es algo que estoy haciendo mal).
Descargué php_mongo.dll, lo copié en xampp / php / ext y agregué extension=php_mongo.dll
en el archivo php.ini.
He agregado 4 dll más porque no estoy seguro de cuál debo usar:
-
extension=php_mongo-1.5.4-5.5-vc11-nts
-
extension=php_mongo-1.5.4-5.5-vc11
-
extension=php_mongo-1.5.4-5.5-vc11-nts-x86_64
-
extension=php_mongo-1.5.4-5.5-vc11-x86_64
Así que ahora recibo 5 advertencias en lugar de una. Al final, creo que uno de ellos funcionará y borraré el otro 4.
Cosas que probé y estoy seguro de que están bien:
- La extensión_dir apunta a la carpeta correcta.
- El php.ini que modifiqué es el que carga xammp.
- Phpinfo no muestra nada sobre mongo.
¿Qué más puedo probar?
Editar
Lo intenté
echo extension_loaded ("mongo")? "cargado / n": "no cargado / n";
y siempre dice ''no cargado''.
Editar
¡Finalmente! El problema era el nombre del dll. Tiene que ser ''php_mongo.dll'' y estaba tratando de cargar el nombre completo dll como dije al comienzo de esta publicación. Así que cambié el dll correcto para mí ( extension=php_mongo-1.5.4-5.5-vc11
) para la extension=php_mongo.dll
y voilà!
De this página:
Nota: dependencias DLL adicionales para usuarios de Windows:
Para que esta extensión funcione, hay archivos DLL que deben estar disponibles para el sistema de Windows PATH
La respuesta es seguir las instrucciones. Me faltaba la línea de necesidad muy importante que debe venir antes de crear el nuevo objeto mongodb:
<?php
require ''vendor/autoload.php'';
$client = new MongoDB/Client("mongodb://localhost:27017");
Y, por supuesto, debe ejecutar este comando en la raíz de su proyecto según las instrucciones:
composer require mongodb/mongodb
No ha instalado el controlador PHP de MongoDB, consulte este enlace http://www.php.net/manual/en/mongo.installation.php
Fuentes de actualización
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
echo ''deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen'' | sudo tee /etc/apt/sources.list.d/mongodb.list
sudo apt-get update
Instalar el controlador PHP de MongoDB
sudo apt-get install php5-dev php5-cli php-pear -y
sudo pecl install mongo
Abra su archivo php.ini y añádalo:
extension=mongo.so
Reiniciar Apache
sudo /etc/init.d/apache2 restart
Otra información de ayuda:
esto debería ayudar a encontrar su archivo php.ini:
php -i | grep ''Configuration File''
En Ubuntu muestra esto:
Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini
toma nota de que ejecutas este comando desde cli (línea de comando), así que para tu verdadero php.ini ve a la carpeta apache2 en lugar de cli :)
Obteniendo el mismo error y ahora está resuelto.
Estoy usando Linux Mint. Para resolver este problema, agregué extension=mongo.so
en dos directorios:
- /etc/php5/cli/php.ini
- /etc/php5/apache2/php.ini
Para aquellos que llegan a esta página con PHP 7 instalado:
La clase MongoCLient
fue proporcionada por pecl install mongo
. Pero pecl/mongo
no está disponible para php7 y está obsoleto a favor de pecl/mongodb
. Pero con pecl/mongodb
necesitará usar MongoDB/Driver/Manager lugar de MongoClient (la advertencia en la página también lo dice).
Mira here para leer más.
Dicho esto, necesitarás una capa de abstracción sobre PHP MongoDB/Driver/Manager
. Esto es proporcionado por mongodb/mongo-php-library .
Necesitarás refactorizar cosas como:
-
/MongoClient
to/MongoDB/Client
-
/MongoCollection
to/MongoDB/Collection
-
/MongoClient->selectDB
to/MongoDB/Client->selectDatabase
-
/MongoClient->listDBs
to/MongoDB/Client->listDatabases
- también la salida no es una matriz, sino un iterador, por lo que deberá usar
iterator_to_array
, junto con las ediciones de cómo usa el objeto resultante
- también la salida no es una matriz, sino un iterador, por lo que deberá usar
-
/MongoCollection->getName
to/MongoDB/Collection->getCollectionName
-
/MongoCollection->update
a/MongoDB/Collection->updateOne
oupdateMany
-
/MongoCollection->remove
to/MongoDB/Collection->deleteOne
-
/MongoCollection->batchInsert
to/MongoDB/Collection->insertMany
instalar el controlador, tengo por ejemplo php5.6:
sudo apt-get install php5.6-mongo
su versión de php y su versión de archivo dll deben ser las mismas. Si las versiones no son las mismas, actualice su xampp php de acuerdo con la versión de dll disponible.