Jak zainstalować rozszerzenie PHP Mongodb w Ubuntu 16.04 LTS

27

Używam Ubuntu 16.04 LTS i chcę używać Mongodb z PHP. Do tego próbowałem

sudo apt-get install php5-mongo

co wystarczy dla Ubuntu 14.04 LTS wystarczyłoby, ale się myliłem. Otrzymuję komunikat o błędzie jako:

E: Unable to locate package php5-mongo

Właśnie zmodernizowane urządzenia do systemu operacyjnego Ubuntu 16.04 LTSi chciał skorzystać mongodbz PHP 7.0.4.

Co mogę zrobić, aby to rozwiązać?

Vikash Kumar
źródło
Też tego próbowałem, sudo apt-get install php7-mongoale nie uzyskałem żadnego pozytywnego rezultatu
Vikash Kumar
jeśli chcesz z php5-mongo, spróbuj tegosudo add-apt-repository ppa:chris-lea/mongodb-drivers sudo apt-get update sudo apt-get install php5-mongo
bhordupur 29.04.16
@bhordupur to repozytorium wydaje się być nieprawidłowe. Czy zastanawiałeś się nad odpowiedzią na to pytanie? 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 Nie Nie podałem tego jako odpowiedzi, ponieważ Vicky R używa Ubuntu 16.04 LTS, gdzie domyślnie instalowany jest php7.x podczas wykonywania tego php-mongodb. Skomentowałem, że z powodu jego przybycia z 14 na 16, ale nadal mógł użyć tego, co skomentowałem powyżej. Dlatego nie podałem komentarza jako odpowiedzi.
bhordupur,

Odpowiedzi:

52

Aby zainstalować rozszerzenie mongodb, wykonaj:

sudo apt-get install php-mongodb
Videonauth
źródło
2
Jak to jest akceptowana odpowiedź dla php7? To polecenie na Ubuntu 16.04 zainstaluje php5.6 Mongo nie?
Ligemer
2
@Ligemer 16.04 ma php7.0 jako domyślny PHP, dlatego wszystkie pakiety meta instalują wersję 7.0 tych.
Videonauth
ahh tak, dziękuję za przypomnienie, mam php5.6 również zainstalowany z innego ppa i to nie są te same pakiety, które doprowadziły mnie do błędu. Niektóre dokumenty Mongo mówią, że używam rozszerzenia pecl, z którego właśnie skorzystałem.
Ligemer
1
Nie zapomnij zrestartować serwera Apache po zainstalowaniu pakietu.
TheKarateKid
Czy mogę używać tego samego polecenia dla AWS Linux Ec2?
151291
8

Jestem pewien, że już znalazłeś rozwiązanie. Chcę jednak podzielić się tym, jak to zrobiłem:

kurczakchilli
źródło
6

Korzystam z wersji PHP 7.0 na Ubuntu 16.04. Podaję szczegółowe informacje na temat instalacji sterownika / klienta Mongo. Najpierw ręcznie zainstalowałem dla niego sterownik mongodb, a następnie sterownik mongodb-php.

1) Instalowanie bazy danych mongo. Wprowadź następujące polecenia:

$ 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

Aby poprawnie uruchomić Mongdb jako usługę, tj. Automatycznie uruchamiać Mongodb po uruchomieniu systemu, wykonaj następujące kroki:

Utwórz plik mongodb.service w / etc / systemd / system / wpisując polecenie:

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

Wklej w nim następującą zawartość:

[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

Następnie wprowadź następujące polecenia:

$ sudo systemctl start mongodb

$ sudo systemctl enable mongodb

2) Instalowanie sterownika mongo-php:

$ sudo pecl install mongodb

Może również pojawić się błąd: nie znaleziono phpize. Phpize to polecenie używane do tworzenia środowiska kompilacji. Ten błąd może pojawić się podczas instalacji dowolnego rozszerzenia pecl. Aby rozwiązać ten problem, nie znaleziono komendy phpize, użytkownik musi zainstalować pakiet php5-dev. Aby zainstalować, wprowadź polecenie:

 $ sudo apt-get install php7.0-dev

Następnie w pliku php.ini, który znajduje się w katalogu /etc/php/7.0/apache2, dodaj rozszerzenie db bazy danych mongo:

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

Dodaj następujący wiersz do pliku:

rozszerzenie = mongo.so;

(Może być konieczne podanie dokładnej lokalizacji pliku. W moim przypadku plik znajdował się w /usr/lib/php/20151012/mongodb.so.)

Tak więc mongo db jest instalowany wraz ze sterownikiem.

3) Teraz pamiętaj, że klasy mongo-php zostały zmienione. Większość dostępnych zasobów w sieci daje rozwiązania wykorzystujące stare klasy, które są zastępowane. Poniżej znajdują się linki, do których możesz się odwoływać:

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

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

Oto kilka poleceń podstawowych operacji na bazie danych:

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

Aby wstawić dane do bazy danych:

$bulk = new MongoDB\Driver\BulkWrite;

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

$bulk->insert($doc);

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

Do pobierania danych:

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

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

foreach ($rows as $row) 
    {
         echo "$row->data - $row->info\n";
    }
Pransh Tiwari
źródło
1

lub dla php 7

sudo apt-get install php7.0-mongodb
Albert s
źródło
zainstalowaliśmy mongodb, ale wystąpił błąd podczas ładowania zestawu Jumpset w przeglądarce, np .: Błąd: Rozszerzenie PECL MongoDB nie zostało zainstalowane lub włączone
shivashankar m
0

Używam tego na moim 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 \
MauricioOtta
źródło