Cómo instalar la extensión PHP de Mongodb en Ubuntu 16.04 LTS


27

Estoy ejecutando Ubuntu 16.04 LTS y quiero usar Mongodb con PHP. Para esto probé

sudo apt-get install php5-mongo

que es suficiente para Ubuntu 14.04 LTS sería suficiente pero me equivoqué. Recibo un mensaje de error como:

E: Unable to locate package php5-mongo

Acabo de actualizar el sistema operativo de la máquina a Ubuntu 16.04 LTSy quería utilizar mongodbcon PHP 7.0.4.

Entonces, ¿qué puedo hacer para resolver esto?


También lo intenté sudo apt-get install php7-mongopero no obtuve ningún resultado positivo
Vikash Kumar

si quieres con php5-mongo, entonces intenta estosudo add-apt-repository ppa:chris-lea/mongodb-drivers sudo apt-get update sudo apt-get install php5-mongo
bhordupur

@bhordupur este repositorio parece no ser válido. Además, ¿ha considerado hacer que esto sea una respuesta? W: The repository 'http://ppa.launchpad.net/chris-lea/mongodb-drivers/ubuntu xenial Release' does not have a Release file. N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use. N: See apt-secure(8) manpage for repository creation and user configuration details. E: Failed to fetch http://ppa.launchpad.net/chris-lea/mongodb-drivers/ubuntu/dists/xenial/main/binary-amd64/Packages 404 Not Found
Vivek Kodira

1
@VivekKodira No, no lo puse como respuesta porque Vicky R estaba usando Ubuntu 16.04 LTS donde, por defecto, php7.x se instaló mientras realizaba este php-mongodb. Comenté que debido a que venía de 14 a 16, pero aún así podría usar lo que comenté anteriormente. Es por eso que no puse mi comentario como respuesta.
bhordupur

Respuestas:


52

Para instalar la extensión mongodb, haga:

sudo apt-get install php-mongodb

2
¿Cómo es esta la respuesta aceptada para php7? Este comando en ubuntu 16.04 instalará php5.6 mongo no?
Ligemer

2
@Ligemer 16.04 tiene php7.0 como PHP predeterminado, por lo tanto, todos los metapaquetes instalan la versión 7.0 de dichos.
Videonauth

ahh sí, gracias por el recordatorio, tengo php5.6 instalado también desde otro ppa y no son los mismos paquetes lo que me llevó al error. Parte de la documentación de mongo dice que use la extensión pecl, que es lo que terminé usando.
Ligemer

1
No olvide reiniciar el servidor Apache después de instalar el paquete.
TheKarateKid

¿Puedo usar el mismo comando para AWS Linux Ec2?
151291


6

Estoy usando php versión 7.0 en ubuntu 16.04. Estoy dando una información detallada para instalar el controlador / cliente mongo. Primero instalé manualmente mongodb y luego el controlador mongodb-php para ello.

1) Instalación de mongo db. Ingrese los siguientes comandos:

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

$ echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

$ sudo apt-get update

$ sudo apt-get install -y mongodb-org

Para iniciar correctamente Mongdb como servicio, es decir, iniciar automáticamente Mongodb cuando se inicia el sistema, siga los siguientes pasos:

Cree el archivo mongodb.service en / etc / systemd / system / ingresando el comando:

$ sudo nano /etc/systemd/system/mongodb.service

Pegue los siguientes contenidos en él:

[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target

[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf

[Install]
WantedBy=multi-user.target

Luego ingrese los siguientes comandos:

$ sudo systemctl start mongodb

$ sudo systemctl enable mongodb

2) Instalación del controlador mongo-php:

$ sudo pecl install mongodb

También puede recibir un error: phpize no encontrado. Phpize es un comando que se utiliza para crear un entorno de compilación. Este error podría aparecer en el momento de la instalación de cualquier extensión pecl. Para resolver este problema del comando phpize no encontrado, el usuario debe instalar el paquete php5-dev. Para instalarlo ingrese el comando:

 $ sudo apt-get install php7.0-dev

Luego, en el archivo php.ini que se encuentra en el directorio /etc/php/7.0/apache2, agregue la extensión mongo db:

$ sudo nano /etc/php/7.0/apache2/php.ini 

Agregue la siguiente línea en el archivo:

extensión = mongo.so;

(Es posible que deba especificar la ubicación exacta del archivo. En mi caso, el archivo estaba en /usr/lib/php/20151012/mongodb.so).

Entonces el mongo db se instala junto con su controlador.

3) Ahora tenga en cuenta que las clases mongo-php han cambiado. La mayoría de los recursos disponibles en la red dan soluciones utilizando clases antiguas que se reemplazan. A continuación se encuentran los enlaces a los que puede referirse:

http://php.net/manual/en/set.mongodb.php

http://zetcode.com/db/mongodbphp/

Aquí hay algunos comandos para las operaciones básicas de la base de datos:

$mng = new MongoDB\Driver\Manager(); // Driver Object created

Para insertar datos en la base de datos:

$bulk = new MongoDB\Driver\BulkWrite;

$doc = ["_id" => new MongoDB\BSON\ObjectID, "data" => $someData, "info" => $someInfo];

$bulk->insert($doc);

$mng->executeBulkWrite('dbName.collectionName', $bulk);

Para buscar datos:

$query = new MongoDB\Driver\Query([]); 

$rows = $mng->executeQuery("dbName.collectionName", $query);

foreach ($rows as $row) 
    {
         echo "$row->data - $row->info\n";
    }

1

o para php 7

sudo apt-get install php7.0-mongodb

hemos instalado mongodb pero el error al cargar el jumpset en el navegador es como: Error: la extensión PECL de MongoDB no se ha instalado o habilitado
shivashankar m

0

Estoy usando esto en mi Dockerfile:

echo 'deb http://packages.dotdeb.org jessie all' >> /etc/apt/sources.list
echo 'deb-src http://packages.dotdeb.org jessie all' >> /etc/apt/sources.list
curl -OL https://www.dotdeb.org/dotdeb.gpg \
    && apt-key add dotdeb.gpg \
    && rm dotdeb.gpg
apt-get update -y \
    && apt-get install -y \
        php7.0 \
        php7.0-mongodb \
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.