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

时间:2016-07-23 21:10:24

标签: 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

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

我从那时起每隔30分钟收到一次上述错误消息。当然,我查了一下,连接到cron的PHP会话清理脚本以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但该线程没有答案。

6 个答案:

答案 0 :(得分:8)

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

在其中一个文件中,您会找到类似于:

的行
extension="memcache.so"

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

;extension="memcache.so"

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

pecl install memcache

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

sudo service nginx restart

答案 1 :(得分:1)

我想你可以从网站here上的类似主题获得帮助。

但简单地说,你的一个扩展是加载内存缓存,其中的路径不正确。 你应该在你的php.ini中找到它并手动修复路径。

答案 2 :(得分:1)

这意味着在你的一个php配置文件(php.ini或其他接近它)中有一个扩展名= ...或zend_extension = ...行试图加载该扩展名:ixed.5.2。林

不幸的是,文件或路径不存在或权限不正确。

尝试搜索PHP加载的.ini文件(phpinfo()可以指示哪些文件) - 其中一个应该尝试加载该扩展名。 更正文件的路径或注释掉相应的行。

答案 3 :(得分:1)

检查是否安装并启用了msgpack扩展(php -i | grep msgpack)。

似乎Ubuntu中的PHP是用by default编译的。

如果已安装并启用,请检查memcached扩展名。也许您正在使用以前的安装或类似的东西。

答案 4 :(得分:1)

tl; dr:我最终必须从我的服务器手动清除所有小于php7.0的PHP,以及相关的cron作业。

长篇故事:

通过我的运行过程(ps -aux | grep 'php'),我意识到php5仍在运行。我服务器上的所有内容都使用PHP7,因此延迟进程是多余的,此外还有一个cron作业在php5某处运行会话清理作业,使用脚本查找所谓的缺失Memcached文件。

通过apt从系统中删除所有小于php7的phps后,我还删除了/usr/lib/php5/usr/lib/php/中所有小于php7的现有文件夹在/etc/cron.d/php5和/或/etc/cron.d/php/

中找到与cron相关的工作

不再有关于memcache的PHP会话清理的抱怨警告

答案 5 :(得分:0)

我在使用memcache.so时遇到类似的错误,并且我注意到系统运行“ pecl install memcache”后即安装了新版本的memcache(自动更新为最新版本)。新版本导致了该错误,因此我不得不将版本1的版本降低为pecl install memcache-4.0.5.2,它才有效。感谢@Farkie的真知灼见,那时我才意识到几天前刚发布了一个新版本,就是这样!