2016-07-23 54 views
1
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以回传给我的个人电子邮件。PHP启动:无法加载动态库php_msgpack_serialize

我一直以30分钟的间隔收到上述错误信息。当然,我查了一下,有一个附加到cron的PHP会话清理脚本,每隔30分钟运行一次。

我一直在四处搜寻,但找不到任何具体的解决方案。

我的设置:

  • memcached的1.4.25
  • PHP 7.0
  • 的nginx/1.10.0
  • 的MySQL版本14.14 DISTRIB 5.7.13
  • Ubuntu服务器16.04 LTS

最近我发现我的问题上面是这样的:http://community.rtcamp.com/t/php-warning-error-php-msgpack-serialize/6262 bu在那个线程上没有答案。

回答

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 
+0

我意识到什么是触发错误甚至不是我的服务器与nginx一起使用。把它们全部删除,现在放心。谢谢 – Rexford

+0

嗯,我的解决方案会修复php5错误:) – Farkie

1

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

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

+0

并找到确切分机呼叫的mecached没有更多的抱怨警告就是我苦苦寻找。 – Rexford

+0

对不起,这样的延迟回复。您可以在Unix/Linux的/ usr/lib/php/modules的地址处['](http://stackoverflow.com/a/30371691/6627229)'here'中解释模块。 – Raham

1

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

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

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

1

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

看来,在Ubuntu的PHP编译它by default

如果已安装并启用,则检查您的memcached扩展。也许你是从以前的安装或类似的东西中使用它。

+0

我看到安装了msgpack。 – Rexford

1

TL;博士:我最终不得不清除一切PHP这是从我的服务器手动小于php7.0,与他们相关的cron作业一起。

长的故事:

通过我的正在运行的进程(ps -aux | grep 'php')去,我意识到PHP5依然在那里运行。我的服务器上的所有东西都使用PHP7,因此冗长的过程是多余的,另外还有一个cron作业,它在某处使用脚本运行会话清理作业,这个脚本寻找所谓的缺少Memcached文件。

去除通过apt小于从系统PHP7所有PHPS后,我也去了删除所有现有的文件夹,在/usr/lib/php5小于PHP7和或与他们的cron相关的工作沿着/usr/lib/php//etc/cron.d/php5和或/etc/cron.d/php/发现

从PHP会议关于清理内存缓存

相关问题