PHP memcached - 第0行的Unknown中的php_msgpack_serialize

时间:2014-04-08 04:15:56

标签: php memcached

最近升级的PHP并在更新时遇到以下错误消息:

php_msgpack_serialize in Unknown on line 0

首先,从未听说过这个包。对这个软件包的所有搜索都会导致单个PECL回购(这实际上也没有任何意义) - 社区提到的内容几乎为零。

进行了一些搜索,我将原点追溯到php-memcached-dev的仓库 - 我从未见过或听说过的仓库。

当然,我已经听说过实际的memcached库回购:libmemcached

我试图在任何地方寻找这个模块,以表明它是centos的合法部分,但我似乎无法获得任何好的/可靠的结果。

我搜索了这个包和/或存储库的任何标志的地方:

我不想在这里显得偏执,但我不确定这在现阶段是否合法。

耸耸肩 - 我不知道。我保持服务器关闭,直到我看到别的东西。任何人都有一些建议/意见?

对于偏执狂(是的,我发现它本身就是一点点),这是一个丑陋的谷歌搜索:php_msgpack backdoor(注意:只有 2 3 搜索结果。查看第二 第三次中的日期。我自己没有点击它,也不建议其他人点击它)这似乎是一个rkhunter搜索寻找上面报告的相同文件。可能只是一个巧合,但谁知道。不管怎样我以为我会把它推出去。

更新:嗯,长话短说这对于安装了Cent的PHP版本来说是一个问题。它已使用最新版本修复。

6 个答案:

答案 0 :(得分:5)

在Ubunu 16.04上使用来自Ondrej-PPA的PHP 5.5(https://launchpad.net/~ondrej/+archive/ubuntu/php)我可以通过安装包php-msgpack解决问题:

sudo apt-get install php-msgpack

而不是使用

启用php-msgpack

sudo phpenmod msgpack

如果你将它与PHP一起使用,也许你之后重启apache2。

比这个错误消失了:

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20121212/memcached.so' - /usr/lib/php/20121212/memcached.so: undefined symbol: php_msgpack_serialize in Unknown on line 0

答案 1 :(得分:2)

如果您在2020年10月到达此地,是因为升级后出现错误,并且您正在使用存储库 ppa:ondrej / php ,则需要安装特定版本的msgpack,因为突然间 memcached正在寻找该共享库。

我们正在此仓库中运行php 7.3,尽管已安装php-msgpack,但我们需要安装 php7.3-msgpack (直到此升级才需要)。无需如已接受的答案中所述“启用”它。只需重新启动php。

两个步骤:

sudo apt install php7.3-msgpack
sudo systemctl restart php7.3-fpm.service

答案 2 :(得分:1)

要检查的最后一件事: 必须在memcached之前加载 msgpack扩展名。

在我的场景中,扩展按字母顺序加载,因此在msgpack之前加载了memcached。在我在memcached之前加载msgpack之前,Php cli没有工作。

答案 3 :(得分:0)

如果您的代码库没有使用MsgPack,您可以从php.ini和/或在php.d / *子目录中提及它的较小文件中删除它。

答案 4 :(得分:0)

嗯,长话短说这对于与Cent一起安装的PHP版本来说是一个问题。它已使用最新版本修复。

答案 5 :(得分:0)

以下命令解决了我的问题。

<h1 id="demo"></h1>

sudo apt-get install php-igbinary

sudo apt-get install php-msgpack

参考: https://laracasts.com/discuss/channels/forge/php-71-update-broken-memcached