it-roy-ru.com

- mongodb / mongodb 1.2.0 требует ext-mongodb ^ 1.3.0 -> запрашиваемое расширение PHP mongodb отсутствует в вашей системе

В Debian Jessie, Apache2 - версия "0.91-ubuntu1", PHP 5.6.30.

Я перепробовал много вопросов, на которые уже отвечали при поиске темы.

1) Я выполнил установку вручную для MongoDB PHP Driver http://php.net/manual/en/mongodb.installation.manual.php

2) Чтобы проверить, работает ли он, я создал файл testMongo.php и добавил

<? php phpinfo (); ?>

3) Запуск testMongo.php в браузере приводит к тому, что файл конфигурации можно найти в.

/etc/php5/Apache2/php.ini

4) Мой файл mongo.so можно найти с помощью команды

php -i | grep extension_dir

5) Вывод:

extension_dir =>/usr/lib/php5/20131226 =>/usr/lib/php5/20131226

6) В этот файл я добавил сразу после "Динамические расширения"

расширение =/USR/Библиотека/php5/20131226/mongo.so

7) Затем я перешел к Composer и выполнил установку из командной строки.

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

8) После установки Composer я попытался:

php composer.phar require mongodb/mongodb

Однако это приводит к следующему сообщению:

  Problem 1
   - mongodb/mongodb 1.2.0 requires ext-mongodb ^1.3.0 -> the requested PHP extension mongodb is missing from your system.
   - mongodb/mongodb 1.2.0 requires ext-mongodb ^1.3.0 -> the requested PHP extension mongodb is missing from your system.
   - mongodb/mongodb 1.2.0 requires ext-mongodb ^1.3.0 -> the requested PHP extension mongodb is missing from your system.
   - Installation request for mongodb/mongodb ^1.2 -> satisfiable by mongodb/mongodb[1.2.0].

Некоторые сотрудники упомянули в посте, что я могу использовать --ignore-platform-reqs. Это работает!

Когда я бегу:

# php5 index.php

$ client = new MongoDB\Client (<подключение к монго-атласу>) // Работает с питоном

Я получаю следующую ошибку:

PHP Fatal error:  Class 'MongoDB\Driver\Manager' 
not found in /var/www/vendor/mongodb/mongodb/src/Client.php on line 83
2
Mattis Asp

Composer дает вам правильный ответ там, вы используете неправильную библиотеку . Не используйте --ignore-platform-reqs, или вы можете, чтобы заставить его установить . Что вам нужно сделать сейчас это проверить, какая библиотека подходит для вашей версии PHP. Написать 

php - версия

если вы не знаете, какой вы используете. Вывод должен быть примерно таким:

PHP 5.6.30-0+deb8u1 (cli) (built: Feb  8 2017 09:49:20)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

Найдите свою версию в списке ниже.

Смотрите описание в mongodb: PHP-драйвер для mongodb

 Driver compatibility

Перейдите на pecl и загрузите любую версию, соответствующую вашему номеру php. 

в вашем случае (PHP5.6):

$ wget https://pecl.php.net/get/mongodb-1.2.11.tgz
$ tar -xvzf mongodb-1.2.11.tgz
$ cd mongodb-1.2.11/
$ phpize
$ ./configure
$ make all -j 5
$ Sudo make install

теперь это должно работать.

Вы можете проверить соединение php mongodb с помощью этого кода (найдя ObjectId):

<?php
# filename ConnectMongo.php
require_once __DIR__ . "/vendor/autoload.php";

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// connect to mongodb
$manager = new MongoDB\Driver\Manager('mongodb://username:[email protected]');

$id = new \MongoDB\BSON\ObjectId("5a0c8e2362eb6404c2f10032");
$filter = ['_id' => $id];
$options = [];

$query = new \MongoDB\Driver\Query($filter, $options);
$rows   = $manager->executeQuery('db.collection', $query);
foreach ($rows as $document) {
    var_dump($document);
}
?>

В терминале напишите это, чтобы проверить соединение:

$ php ConnectMongo.php

Убедитесь, что вы также устанавливаете с помощью composer, вы больше не должны получать ту же ошибку. 

5
Mattis Asp

Вы можете попробовать с этим флагом: --ignore-платформы Reqs

0
Ariel Ruiz