Laravel Homestead Mongo install вызывает ошибку PHP undefined: php_json_serializable_ce в Unknown on line 0

PHP Предупреждение: запуск PHP: невозможно загрузить динамическую библиотеку '/usr/lib/php/20151012/mongodb.so' – /usr/lib/php/20151012/mongodb.so: undefined symbol: php_json_serializable_ce в Unknown on line 0

После установки MongoDB я получаю эту ошибку всякий раз, когда запускаю любую команду php из терминала:

php artisan

php -v

Я искал 2 дня. Я видел это:

PHP не может загружать динамическую библиотеку (mongo.so)

https://github.com/mongodb/mongo-php-library/issues/126

и я уверен, что любое другое решение, которое возникает из этой ошибки. Все они кажутся исправлениями для php5 и не работают для меня.

Я добавил расширение = mongodb.so для ini-файлов.

Я уничтожил VM и начал работать 100 раз.

Я запускаю: Vagrant 1.8.5 Laravel Installer версии 1.3.3

vagrant@homestead:~$ php -v PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/mongodb.so' - /usr/lib/php/20151012/mongodb.so: undefined symbol: php_json_serializable_ce in Unknown on line 0 PHP 7.0.13-1+deb.sury.org~xenial+1 (cli) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.13-1+deb.sury.org~xenial+1, Copyright (c) 1999-2016, by Zend Technologies with blackfire v1.14.1~linux-x64-non_zts70, https://blackfire.io, by Blackfireio Inc. 

Монго установлен и работает нормально:

 vagrant@homestead:~$ mongo MongoDB shell version v3.4.0 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.0 Server has startup warnings: 2016-12-05T15:32:01.158+0000 I STORAGE [initandlisten] 2016-12-05T15:32:01.204+0000 I CONTROL [initandlisten] 2016-12-05T15:32:01.204+0000 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 2016-12-05T15:32:01.204+0000 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 2016-12-05T15:32:01.204+0000 I CONTROL [initandlisten] 2016-12-05T15:32:01.204+0000 I CONTROL [initandlisten] 2016-12-05T15:32:01.204+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 2016-12-05T15:32:01.204+0000 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2016-12-05T15:32:01.204+0000 I CONTROL [initandlisten] 2016-12-05T15:32:01.204+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 2016-12-05T15:32:01.205+0000 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2016-12-05T15:32:01.205+0000 I CONTROL [initandlisten] > 

Но я не могу остановить эту ошибку php ни за что в мире !!!

Я думаю, проблема здесь в том, что mongodb.so зависит от json.so. Решение заключается в загрузке mongodb.so после json.so.

Я предполагаю, что вы используете специальный Mongo-скрипт для Homestead. Сценарий выводит модуль mongodb.so в файл php.ini, в результате чего сначала загружается mongodb.so. Вы должны создать файл mongodb.ini, где загружается mongodb.so.

Создайте .ini-файл: /etc/php/7.0/mods-available/mongodb.ini с содержимым:

 ; configuration for php mongo module ; priority=30 extension=mongodb.so 

Дайте ему приоритет 30, так как json получает 20 (в моих настройках), чтобы быть уверенным, что он загружается впоследствии.

Создайте программную ссылку ini-файла на /etc/php/7.0/fpm/conf.d, чтобы сделать ее доступной для веб-сервера.

 ln -s /etc/php/7.0/mods-available/mongodb.ini 30-mongodb.ini 

Перезагрузите веб-сервер и php-fpm.

 sudo service [your webserver] restart && sudo service php7.0-fpm restart 

Вы сделали! Вы можете настроить cli-версию таким же образом

У меня была та же проблема, я решил ее, вернувшись к более ранней версии POCL mongodb (1.1.9). 29 ноября было обновлено до версии 1.2.0 , поэтому mongo-php-библиотека также обновилась до версии 1.1.0 .

Вот что я сделал:

 sudo pecl uninstall mongodb sudo pecl install mongodb-1.1.9 composer update 

Команды pecl будут показывать одно и то же предупреждение, но установка была успешно завершена.

Я надеюсь, что скоро будет установлена ​​скоростная библиотека mongo-php, поэтому мы не зацикливаемся с использованием более старого расширения PECL.