Laravel Homestead Mongo 安装导致 PHP 错误未定义符号:第 0 行未知中的 php_json_serializable_ce
Laravel Homestead Mongo install causing PHP error undefined symbol: php_json_serializable_ce in Unknown on line 0
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
安装 MongoDB 后,每当我从终端发出 运行 任何 php 命令时,我都会收到此错误:
php artisan
php -v
我已经搜索了 2 天了。我看过这些:
PHP unable to load dynamic library (mongo.so)
https://github.com/mongodb/mongo-php-library/issues/126
而且我很确定 google 这个错误会带来任何其他解决方案。它们似乎都是 php5 的修复程序,对我不起作用。
我已将扩展名=mongodb.so 添加到 ini 文件。
我已经销毁了 VM 并重新启动了 100 次。
我是 运行宁:
流浪者 1.8.5
Laravel 安装程序版本 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.
Mongo 已安装并且 运行 正常:
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 错误!!!
我遇到了同样的问题,我通过恢复到较旧的 PECL mongodb 版本 (1.1.9) 解决了这个问题。 version 1.2.0 on November 29th, which is why the mongo-php-library also got updated to version 1.1.0.
有更新
这是我所做的:
sudo pecl uninstall mongodb
sudo pecl install mongodb-1.1.9
composer update
pecl 命令会显示相同的警告,但安装已成功完成。
我希望 mongo-php-library 能尽快修复,这样我们就不会被困在使用旧的 PECL 扩展。
我认为问题出在这里 mongodb.so 取决于 json.so。解决方法是在json.so之后加载mongodb.so。
我猜您正在使用 Homestead 的自定义 Mongo 脚本。该脚本输出 php.ini 文件中的 mongodb.so 模块,结果首先加载 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-version
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
安装 MongoDB 后,每当我从终端发出 运行 任何 php 命令时,我都会收到此错误:
php artisan
php -v
我已经搜索了 2 天了。我看过这些:
PHP unable to load dynamic library (mongo.so)
https://github.com/mongodb/mongo-php-library/issues/126
而且我很确定 google 这个错误会带来任何其他解决方案。它们似乎都是 php5 的修复程序,对我不起作用。
我已将扩展名=mongodb.so 添加到 ini 文件。
我已经销毁了 VM 并重新启动了 100 次。
我是 运行宁: 流浪者 1.8.5 Laravel 安装程序版本 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.
Mongo 已安装并且 运行 正常:
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 错误!!!
我遇到了同样的问题,我通过恢复到较旧的 PECL mongodb 版本 (1.1.9) 解决了这个问题。 version 1.2.0 on November 29th, which is why the mongo-php-library also got updated to version 1.1.0.
有更新这是我所做的:
sudo pecl uninstall mongodb
sudo pecl install mongodb-1.1.9
composer update
pecl 命令会显示相同的警告,但安装已成功完成。
我希望 mongo-php-library 能尽快修复,这样我们就不会被困在使用旧的 PECL 扩展。
我认为问题出在这里 mongodb.so 取决于 json.so。解决方法是在json.so之后加载mongodb.so。
我猜您正在使用 Homestead 的自定义 Mongo 脚本。该脚本输出 php.ini 文件中的 mongodb.so 模块,结果首先加载 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-version