На 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