Рубрики
Uncategorized

Ожидается, что обновление PHP 7 jenssegers/mongodb будет справочным

Автор оригинала: David Wong.

На pecl есть два расширения mongodb, оба официально выпущены. Один-монго, другой-монгодб. Первый был официально отменен и больше не предоставляет стабильных обновлений. Последнее официально рекомендуется, и последнее поддерживает php 7. Найдите mongodb в PECL, чтобы найти его, или установите его через PECL install mongodb. Mongo и mongodb имеют совершенно разные структуры и разные способы их использования, но существует официальный пакет адаптеров PSP, который делает mongodb похожим на опыт монго в https://github.com/mongodb/mo…

Все вышесказанное вытекает из этой проблемы.

Laravel-mongodb в настоящее время используется

ВНИМАНИЕ: Старый драйвер PHP mongo больше не поддерживается в версиях.0.

Поскольку текущая версия 2.1 несовместима с расширением mongodb после обновления PHP 7, есть два варианта:

1. Обновите до версии 3.0. 2. Используйте https://github.com/alcaeus/mo… в качестве промежуточного программного обеспечения, без изменения существующего кода.

Второе решение исходит из http://php.net/manual/zh/set… Есть адаптер – так что старый код MongoClient/MongoDB будет работать на новом PHP7/Mongo. https://github.com/alcaeus/mo…

Давайте поговорим не о первом плане, а о втором.

конфигурация композитора “platform.ext-mongo” “1.6.16” && композитору требуется alcaeus/mongo-php-адаптер

Затем проверьте это.

Сообщение:: создать (['заголовок'=>'заголовок','содержимое'=>'содержимое 22','время'=> время ()]); Советы:

ErrorException in Collection.php line 42:
Parameter 1 to MongoCollection::insert() expected to be a reference, value given

Что делать, если есть проблема? Конечно, поиск ах, так что Google, должен сказать, что Google настроен оптимистично, первый найденный результат https://github.com/alcaeus/mo…

Посмотри на Байду еще раз

Ты не можешь пролистать bing.com.

Или ищите проблемы

Откройте вторую ссылку https://github.com/jenssegers… Смотрите последнюю ссылку на https://github.com/zamrih/lar…

Затем измените исходный файл jenssegers/mongodb/src/Jenssegers/Mongodb/Collection.php Хотя это можно решить, это не очень хороший способ.

/**
      * Handle specific insert call.
      * Cannot be handled dynamically because a reference needs to be passed
      * @param  array|object   $document
      * @param  array   $options
      * @return mixed
      */
     public function insert(&$document, array $options = [])
     {
         return $this->__call('insert', array(&$document, $options));
     }
     
    /**
      * Handle specific batchInsert call.
      * Cannot be handled dynamically because a reference needs to be passed
      * @param  array   $a
      * @param  array   $options
      * @return mixed
      */
     public function batchInsert(array &$a, array $options = [])
     {
         return $this->__call('batchInsert', array(&$a, $options));
     }
     
    /**
      * Handle specific save call.https://github.com/zamrih/laravel-mongodb/commit/8c3b4aaaee773e0c2968b4ff215ccec5305394e2
      * Cannot be handled dynamically because a reference needs to be passed
      * @param  array|object   $document
      * @param  array   $options
      * @return mixed
      */
     public function save(&$document, array $options = [])
     {
         return $this->__call('save', array(&$document, $options));
     }

На самом деле, https://github.com/alcaeus/mo… дает подсказку. Методы вставки, пакетной вставки и сохранения принимают первый аргумент по ссылке. Хотя исходный API явно не указывает аргументы по ссылкам, он добавляет поле идентификатора к указанным объектам и документам.

Затем возникают новые проблемы: Фатальная ошибка: Вызов неопределенного метода MongoDB\Driver\Read Проблема::по умолчанию() в ..src\Operation\Find.php в строке 193 Поиск https://github.com/alcaeus/mo… https://github.com/mongodb/mo… https://github.com/mongodb/mo…

Https://github.com/mongodb/mo… Это сообщение добавляет драйвер MongoDB для чтения::IsDefault(), но он просит MongoDB расширить 1.3.0.+

Поскольку версия по умолчанию-PHP5, PECL install mongodb запросит

pecl config-show

pecl/mongodb requires PHP (version >= 5.5.0, version <= 7.99.99), installed version is 5.3.29
No valid packages found
install failed

ll /data/php7/bin/
total 124692
-rwxr-xr-x 1 root root      842 Feb  4  2016 pear
-rwxr-xr-x 1 root root      863 Feb  4  2016 peardev
-rwxr-xr-x 1 root root      779 Feb  4  2016 pecl
lrwxrwxrwx 1 root root        9 Feb  4  2016 phar -> phar.phar
-rwxr-xr-x 1 root root    14834 Feb  4  2016 phar.phar
-rwxr-xr-x 1 root root 42332852 Feb  4  2016 php
-rwxr-xr-x 1 root root 42161587 Feb  4  2016 php-cgi
-rwxr-xr-x 1 root root     3583 Feb  4  2016 php-config
-rwxr-xr-x 1 root root 43141643 Feb  4  2016 phpdbg
-rwxr-xr-x 1 root root     4537 Feb  4  2016 phpize

/data/php7/bin/pecl install mongodb

Теперь это версия 1.1.6, поэтому мне нужно перейти на http://pecl.php.net/package/m… загрузите последнюю версию http://pecl.php.net/get/mongo…

tar -zxf mongodb-1.5.2.tgz
cd mongodb-1.5.2
which php7
/data/php7/bin/phpize
which php-config
./configure --with-php-config=/data/php7/bin/php-config
make && make install
ll /data/php7/lib/php/extensions/no-debug-zts-20151012/
php7 -i |grep extension_dir
extension_dir => /data/php7/lib/php/extensions/no-debug-zts-20151012 => /data/php7/lib/php/extensions/no-debug-zts-20151012
sqlite3.extension_dir => no value => no value

php7 --ini
Configuration File (php.ini) Path: /data/php7/etc/
Loaded Configuration File:         /data/php7/etc/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)
vi /data/php7/etc/php.ini
extension=mongodb.so
php7 -m |grep mongodb
php7 -i|grep mongodb

Ссылки: https://github.com/alcaeus/mo… https://github.com/mongodb/mo… https://github.com/alcaeus/mo… http://php.net/manual/en/mong… http://php.net/manual/zh/mong… http://php.net/manual/zh/set…. https://github.com/mongodb/mo… https://secure.php.net/manual… https://github.com/mongodb/mo… https://github.com/alcaeus/mo… PECL заменяет соответствующую версию PHP, Некоторые ямы, вытоптанные колесами PHP7, обновляют практику разработчика PHP, Сбор руководства PHP, Практика обновления PHP 7. Php7cc ПОМОГАЕТ проверить код, где PHP5 php7 несовместим Анализ операции обновления ядра PHP7 PHP7. MongoDB Статья для приятеля, готовящегося к обновлению PHP7