PHP扩展安装出错

wangcanfeng · · 544 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

undefined symbol: core_globals

报错信息:

PHP Warning:  PHP Startup: Unable to load dynamic library '/path/XXX.so' - /path/XXX.so: undefined symbol: core_globals in Unknown on line 0

由于业务需要,开发了一个php扩展。但是在服务器上配置完成之后报错了,出现了以上信息。

undefined symbol: core_globals像是这个符号没有被定义过,于是全局搜索了一下这个符号,发现这个符号只有在php非线程安全的环境才会被定义,线程安全的环境中,定义的是core_globals_id.

因此,扩展也必须在线程安全的环境去构建

如何指定php为线程安全还是线程非安全?

php源码在编译的时候,可以指定 enable-maintainer-zts

php扩展在./configure的时候,会直接取php编译时的配置,无须指定。

如何判断PHP是线程安全还是非线程安全的?

PHP编译成功或者安装成功,会有对应的编译产出物,php或者libphp5.so等,使用一下命令:

objdump -T libphp5.so | grep core_globals

如果可以找到这个符号,那么说明是非线程安全的。
如果显示的core_globals_id,那么说明是线程安全的。

本文来自:简书

感谢作者:wangcanfeng

查看原文:PHP扩展安装出错

544 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet