Come installare l'estensione PHP Mongodb in Ubuntu 16.04 LTS


27

Sto eseguendo Ubuntu 16.04 LTS e voglio usare Mongodb con PHP. Per questo ho provato

sudo apt-get install php5-mongo

che è sufficiente per Ubuntu 14.04 LTS sarebbe sufficiente ma mi sbagliavo. Ricevo un messaggio di errore come:

E: Unable to locate package php5-mongo

Sono appena passato il sistema operativo macchina Ubuntu 16.04 LTSe volevo usare mongodbcon PHP 7.0.4.

Quindi cosa posso fare per risolvere questo?


Ci avevo provato sudo apt-get install php7-mongoanche io, ma non ho ottenuto alcun risultato positivo
Vikash Kumar il

se vuoi con php5-mongo prova questosudo add-apt-repository ppa:chris-lea/mongodb-drivers sudo apt-get update sudo apt-get install php5-mongo
bhordupur,

@bhordupur questo repository sembra non essere valido. Inoltre, hai preso in considerazione l'idea di rendere questa una risposta? 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, non l'ho detto come risposta perché Vicky R utilizza Ubuntu 16.04 LTS dove php7.x viene installato per impostazione predefinita durante l'esecuzione di questo php-mongodb. Ho commentato che a causa del fatto che sarebbe arrivato dalle 14 alle 16, ma poteva ancora usare quello che ho commentato sopra. Questo è il motivo per cui non ho inserito il mio commento come risposta.
bhordupur,

Risposte:


52

Per installare l'estensione mongodb, eseguire:

sudo apt-get install php-mongodb

2
Come è questa la risposta accettata per php7? Questo comando su Ubuntu 16.04 installerà php5.6 mongo no?
Ligemer,

2
@Ligemer 16.04 ha php7.0 come PHP predefinito, quindi tutti i meta-pacchetti installano la versione 7.0 di detti.
Videonauth,

ah sì, grazie per il promemoria, ho installato php5.6 anche da un altro ppa e non sono gli stessi pacchetti che mi hanno portato all'errore. Alcuni documenti di mongo dicono di usare l'estensione pecl che è quello che ho finito per usare.
Ligemer,

1
Non dimenticare di riavviare il server Apache dopo aver installato il pacchetto.
TheKarateKid

Posso usare lo stesso comando per AWS Linux Ec2?
151291,


6

Sto usando php versione 7.0 su Ubuntu 16.04. Fornisco informazioni dettagliate per l'installazione del driver / client mongo. Prima ho installato manualmente mongodb e poi il driver mongodb-php per questo.

1) Installazione di mongo db. Immettere i seguenti comandi:

$ 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

Per avviare correttamente Mongdb come servizio, ovvero avviare automaticamente Mongodb all'avvio del sistema, attenersi alla seguente procedura:

Creare il file mongodb.service in / etc / systemd / system / immettendo il comando:

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

Incolla i seguenti contenuti in esso:

[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

Quindi immettere i seguenti comandi:

$ sudo systemctl start mongodb

$ sudo systemctl enable mongodb

2) Installazione del driver mongo-php:

$ sudo pecl install mongodb

Inoltre potresti ricevere un errore: phpize non trovato. Phpize è un comando utilizzato per creare un ambiente di compilazione. Questo errore potrebbe apparire al momento dell'installazione di qualsiasi estensione pecl. Per risolvere questo problema del comando phpize non trovato, l'utente deve installare il pacchetto php5-dev. Per installarlo inserisci il comando:

 $ sudo apt-get install php7.0-dev

Quindi nel file php.ini che si trova nella directory /etc/php/7.0/apache2, aggiungi l'estensione mongo db:

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

Aggiungi la seguente riga nel file:

extension = mongo.so;

(Potrebbe essere necessario specificare la posizione esatta del file. Nel mio caso il file era in /usr/lib/php/20151012/mongodb.so.)

Quindi il mongo db viene installato insieme al suo driver.

3) Ora tieni presente che le classi mongo-php sono state cambiate. La maggior parte delle risorse disponibili in rete fornisce soluzioni utilizzando vecchie classi sostituite. Di seguito sono riportati i collegamenti a cui è possibile fare riferimento:

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

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

Ecco alcuni comandi per le operazioni di base del database:

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

Per inserire dati nel database:

$bulk = new MongoDB\Driver\BulkWrite;

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

$bulk->insert($doc);

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

Per recuperare i dati:

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

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

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

1

o per php 7

sudo apt-get install php7.0-mongodb

abbiamo installato mongodb ma l'errore durante il caricamento del jumpset sul browser è simile a: Errore: l'estensione MongoDB PECL non è stata installata o abilitata
shivashankar m

0

Sto usando questo sul mio 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 \
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.