phpinfo () и pecl search mongo показывает разные версии mongodb - PullRequest
0 голосов
/ 31 мая 2018

Я установил MongoDB на свой локальный компьютер, ссылаясь на сайт ниже

http://linuxforever.info/2017/04/13/how-to-install-mongodb-3-4-in-linux-mint-18-ubuntu-16-04/

Я сделал простую демонстрацию MongoDB, и когда я запустил проект, я получилошибка типа

Неустранимая ошибка: вызов неопределенного метода MongoDB \ Driver \ WriteConcern :: isDefault ()

Я проверил версию MongoDB с обеих сторон (phpinfo.phpи терминал) это разные.

Терминал => pecl search mongo команда

Matched packages, channel pecl.php.net: Package Stable/(Latest) Local mongo 1.6.16 (stable) MongoDB database driver mongodb 1.4.3 (stable) 1.4.3 MongoDB driver for PHP

Phpinfo =>

MongoDB extension version 1.2.9 MongoDB extension stability stable libbson bundled version 1.5.5 libmongoc bundled version 1.5.5

Пожалуйста, помогите мнеОчистить эту проблему.

Заранее спасибо

Ответы [ 5 ]

0 голосов
/ 20 июля 2018

У меня была похожая проблема, которую я решил через несколько часов.Надеюсь, это сэкономит другим время.Я на macOS Sierra.

Фон

Я запустил sudo pecl install mongodb, чтобы обновить драйвер Монго.Мне не нужно было добавлять расширение в php.ini, потому что оно было там от более старой версии.

PHP отказывался распознавать обновленный драйвер Монго.Я также получил бы Фатальную ошибку: вызов неопределенной ... isDefault () ошибка при попытке выполнить запросы.

Исправление

Шаг 1

Найти полный путь нового расширения драйвера mongodb.

Есть несколько способов сделать это.

Обновление драйвера (то есть sudo pecl install mongodb) приведет к выводу что-то вроде:

Установка '/usr/local/Cellar/php71/7.1.2_13/lib/php/extensions/no-debug-non-zts-20160303/mongodb.so'

В качестве альтернативы вы можете найти его: find / -name "mongodb.so" на Mac или Linux.

Шаг 2

Найдите файл php.ini.Опять есть несколько разных способов.Повторение phpinfo () в php скажет вам, где он находится.В качестве альтернативы вы можете запустить find / -name php.ini.

Шахта была расположена в /usr/local/etc/php/7.1/php.ini

Шаг 3

Редактировать ваш php.INI-файл и замените

extension = "mongodb.so"

на путь к новому расширению:

extension = "/usr/local/Cellar/php71/7.1.2_13/lib/php/extensions/no-debug-non-zts-20160303/mongodb.so"

Шаг 4

Сохраните и повторите ваш запрос.

Подробнее

В моем случае php.ini фактически включал расширение mongo из /usr/local/etc/php/7.1/conf.d/ext-mongodb.ini, так что это был файл, который я редактировал.Однако я успешно протестировал оба решения.

0 голосов
/ 01 июня 2018

enter image description here

пожалуйста, отметьте этот экран коротким

0 голосов
/ 31 мая 2018

MongoDB\Driver\WriteConcern::isDefault() было введено в ext-mongodb 1.3

У вас есть MongoDB extension version 1.2.9, так как вы поделились выводом phpinfo().

Вам необходимо обновитьрасширение.

ОБНОВЛЕНИЕ

Вы можете скачать последнее расширение по следующей ссылке

https://pecl.php.net/package/mongodb

Linux Mint основан на Debian, и вы можете установить на него следующий пакет для обновления https://ubuntu.pkgs.org/18.04/ubuntu-universe-amd64/php-mongodb_1.3.4-1build1_amd64.deb.html

0 голосов
/ 31 мая 2018
<?php
require_once './vendor/autoload.php';
$con = new MongoDB\Client("mongodb://localhost:27017");

// Creating Database
$db = $con->yourdbname;
// Creating Document
$collection = $db->employee;
// Insering Record
$collection->insertOne( [ 'name' =>'Peter', 'email' =>'peter@abc.com'] );
// Fetching Record
$record = $collection->find( [ 'name' =>'Peter'] );
foreach ($record as $employe) {
   echo $employe['name'], ': ', $employe['email']."<br>";
}

?>
0 голосов
/ 31 мая 2018

Попробуйте установить, используя следующую команду:

  pecl install mongodb 

В конце добавьте расширение к файлу php.ini

extension = mongodb.so

Восстановите сервер php и apache

Используйте composer для загрузки пакетов mongo db

composer require mongodb/mongodb 

Запустите следующий код после процесса выше

    <?php  
require 'vendor/autoload.php';  
// Creating Connection  
$con = new MongoDB\Client("mongodb://localhost:27017");  
// Creating Database  
$db = $con->yourdbname;  
// Creating Document  
$collection = $db->employee;  
// Insering Record  
$collection->insertOne( [ 'name' =>'Peter', 'email' =>'peter@abc.com' ] );  
// Fetching Record  
$record = $collection->find( [ 'name' =>'Peter'] );  
foreach ($record as $employe) {  
echo $employe['name'], ': ', $employe['email']."<br>";  
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...