php重新编译后无法加载xcache.so

时间:2015-05-05 16:12:34

标签: php

我在我的raspbian上重新编译了PHP 5.4.39以包含对pthreads的支持 一切都很好,甚至是pthreads,但每次我从命令行运行一个php脚本(我想如果apache使用php,它就是一样),它说它没有加载xcache.so:

  

加载失败/usr/lib/php5/20100525+lfs/xcache.so:/usr/lib/php5/20100525+lfs/xcache.so:undefined symbol:compiler_globals

我使用以下信息重新编译了php:https://www.digitalocean.com/community/questions/enable-zts-support-on-ubuntu-14-04

尽管php运行良好,但我想知道这条消息的含义,如果可能的话,我想解决它。

2 个答案:

答案 0 :(得分:6)

您很可能已启用PHP扩展,这些扩展是针对旧版本的PHP本身构建的。正确的解决方案是删除错误链接的PHP扩展并重建它们。

我建议你从Ubuntu上的XCache扩展(php5-xcache包)开始。按照您提到的教程中的步骤将其删除并重建(只需将php5替换为php5-xcache)。

其他一些扩展程序很可能也存在问题。删除并重建它们。

如果您只使用php5本身的教程,可以放心地说,您需要删除并重建所有扩展程序。这是以php5-开头的所有套餐。

PS:并非所有PHP扩展都支持线程安全。如果您无法构建某个扩展程序,但无论如何都不需要它,只需将其卸载即可。

PPS:XCache是​​一个操作码缓存。确保您不能同时启用多个操作码缓存。例如,不要同时启用XCache和OPcache(或APC),而是选择一个。

答案 1 :(得分:0)

php.ini搜索zend_extension时,在另一个终端中执行sudo updatedb,然后找到xcache.so,这就是您应该放入{{1}的路径}}。如果它没有解决它,您可能正在使用不兼容的xcache模块。即使用非线程安全php的线程安全xcache,反之亦然。