PHP启动:无法加载动态库php_msgpack_serialize

Kho*_*Phi 1 php ubuntu memcached php-7

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20131226/memcached.so' - /usr/lib/php/20131226/memcached.so: undefined symbol: php_msgpack_serialize in Unknown on line 0
Run Code Online (Sandbox Code Playgroud)

今天早些时候,我启用了在我的服务器上将消息转发到root @ localhost以回复我的个人电子邮件.

我从那时起每隔30分钟收到上述错误消息.当然,我检查了一个PHP会话清理脚本附加到cron,以30分钟的间隔运行.

我一直在寻找,但找不到任何具体的解决方案.

我的设置:

  • memcached 1.4.25
  • PHP 7.0
  • nginx的/ 1.10.0
  • mysql Ver 14.14 Distrib 5.7.13
  • Ubuntu Server LTS 16.04

我在上面发现的最接近的问题是:http://community.rtcamp.com/t/php-warning-error-php-msgpack-serialize/6262但该线程上没有答案.

Far*_*kie 8

首先,您需要确定正在加载哪些PHP ini文件.从命令行,您可以运行php --ini.从技术上讲,apache/nginx可以运行不同的版本,phpinfo(); exit();如果你想查看那个版本,你可以使用测试脚本查找.当你使用cron时,无论如何你都在使用命令行版本.

在其中一个文件中,您将找到类似于以下内容的行:

extension="memcache.so"
Run Code Online (Sandbox Code Playgroud)

如果你根本不需要这个扩展,那么只需在前面添加一个;来评论它:

;extension="memcache.so"
Run Code Online (Sandbox Code Playgroud)

如果你需要扩展,那么听起来你需要重建这个模块.最简单的方法是使用PECL.

pecl install memcache
Run Code Online (Sandbox Code Playgroud)

在运行安装时,您可能需要遵循一些说明.一旦完成,您应该能够运行php -v,它不应该输出相同的警告.如果这有效并且你只看到php版本,你应该重新启动nginx(如果你需要在网站上,命令行应该立即工作).:

sudo service nginx restart
Run Code Online (Sandbox Code Playgroud)