我在我的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运行良好,但我想知道这条消息的含义,如果可能的话,我想解决它。
答案 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,反之亦然。