Самый простой способ установить PHP-расширение Mongodb в Ubuntu 13.10 (дерзко)?

Я использую Ubuntu 13.10 (дерзкая саламандра), и я надеялся, что sudo apt-get install php5-mongo будет достаточно, чтобы установить драйвер базы данных mongodb.

Хотя не тут-то было. Я использую php5-fpm, поэтому сначала я обнаружил, что мне также нужно сделать php5enmod mongo, но даже при этом я получаю сообщение об ошибке:

include(MongoClient.php): failed to open stream: No such file or directory

Вместо этого для установки мне нужно сделать следующее (что занимает гораздо больше места на диске):

 sudo apt-get install php5-dev make php-pear
 sudo pecl install mongo
 sudo echo "extension=mongo.so" | tee /etc/php5/mods-available/mongo.ini

Мой вопрос: почему sudo apt-get install php5-mongo недостаточно? Это проблема с репозиторием Ubuntu? Как я могу заглянуть в репозитории ubuntu и узнать, какую версию он использует или почему MongoClient.php не включен. Я использую образ докера «ubuntu:saucy» в качестве своей базы, и я думаю, что он по умолчанию включает вселенную.


person Tom    schedule 17.03.2014    source источник
comment
Вам не нужно включать PHP-скрипт для использования MongoDB. Откройте phpinfo() и убедитесь, что ваш модуль загружен. Имейте в виду, что разные среды PHP используют разные php.ini. (/etc/php5/fpm/php.ini)   -  person Daniel W.    schedule 17.03.2014
comment
apt-get недостаточно, потому что каждая установка PHP отличается   -  person Sammaye    schedule 17.03.2014
comment
также php5-mongo, вероятно, действительно старая версия драйвера, вы должны использовать pecl install mongo   -  person Sammaye    schedule 17.03.2014


Ответы (4)


В Ubuntu 14.04 sudo apt-get install php5-mongo приводит к полностью работающему расширению mongo PHP. Так что я предполагаю, что в Ubuntu 13.10 есть только проблема с упаковкой, которая вызывает проблему.

Решение. Используйте Ubuntu 14.04 LTS вместо Ubuntu 13.10.

Но если вам нужно использовать Ubuntu 13.10, не используйте пакет php5-mongo Ubuntu, вместо этого установите расширение mongo через pecl:

sudo apt-get install php5-dev make php-pear
sudo pecl install mongo
sudo echo "extension=mongo.so" | sudo tee /etc/php5/mods-available/mongo.ini
person Tom    schedule 01.05.2014
comment
Эта строка sudo echo "extension=mongo.so" | tee /etc/php5/mods-available/mongo.ini у меня не работает. Он говорит, что разрешение отклонено при выполнении tee Однако я изменил его на это sudo echo "extension=mongo.so" | sudo tee /etc/php5/mods-available/mongo.ini - person JohnnyQ; 05.11.2014
comment
Если вы хотите, чтобы этот модуль загружался как в apache, так и в cli, вам необходимо правильно связать его. ln -s /etc/php5/mods-available/mongo.ini /etc/php5/cli/mongo.ini и еще одна симлинк для apache - person Reza S; 27.12.2014

Проще всего установить драйвер mongoDB для php5 в Ubuntu с помощью команды:

sudo apt-get install php5-mongo

Внимание, драйвер правильно установлен, но еще не загружен, поэтому обязательно перезагрузите сервер, если с помощью apache следует сделать:

sudo service apache2 restart
person Yassine Khachlek    schedule 10.12.2014
comment
Спасибо, но хотя ваши инструкции будут работать на сегодняшней Ubuntu, они не будут работать на Ubuntu 13.10 (дерзко). - person Tom; 11.12.2014

Также есть хороший способ установить базу данных mongo для PHP. У меня убунту 14.04LTS.

open synaptic package manager and search "mongo"

выберите эти пакеты для установки.

  • PHP-орда-монго
  • PHP-монго

синаптический менеджер пакетов

нажмите «Применить», чтобы установить пакеты.

Теперь перезапустите apache2 с помощью этой команды.

sudo service apache2 restart

Протестируйте монго

создайте файл PHP с именем mongo-test.php и вставьте туда этот код.

<?php
   // connect to mongodb
   $m = new MongoClient();

   echo "Connection to database successfully";
   // select a database
   $db = $m->mydb;

   echo "Database mydb selected";
?>

проверить этот URL-адрес http://localhost/mongo-test.php

person Hafiz Shehbaz Ali    schedule 10.12.2015
comment
В Ubuntu 15.04 я использовал Software Center, чтобы найти php-horde-mongo и php5-mongo. После установки перезапустил апач. И это сработало отлично. Спасибо за предоставление тестового кода :) - person Waqas; 02.02.2016
comment
Добро пожаловать. Synaptic и центр программного обеспечения использовали один и тот же репозиторий для пакетов. Synaptic — более продвинутый инструмент, а Software Center — простой и удобный. - person Hafiz Shehbaz Ali; 05.02.2016

Кажется, это проблема упаковки в Ubuntu.

Вы тоже установили PHP5-fpm через apt-get? Похоже, что существует разрыв между тем, как вы установили PHP5, и тем, какой файл php.ini пытается обновить пакет php5-mongo.

Что касается ошибки include(MongoClient.php): failed to open stream; это из-за твоего автозагрузчика. Когда вы делаете new MongoClient, когда расширение не включено, оно попадает в вашу автозагрузку, которая пытается включить файл с именем <classname>.php

person bjori    schedule 08.04.2014