Mac系统下安装PHP UUID扩展编译报错,如何解决?
解决PHP UUID扩展编译时的未声明标识符错误
这个问题我之前帮不少开发者排查过,核心原因是你安装的新版ossp-uuid,和你使用的PHP UUID扩展(1.0.4)里硬编码的旧常量命名不兼容了。新版本的ossp-uuid已经把UUID_TYPE_DCE_TIME、UUID_TYPE_DCE_RANDOM这类带DCE前缀的常量名,简化成了UUID_TYPE_TIME和UUID_TYPE_RANDOM,直接改源码就能解决:
- 打开你的扩展源码文件:
/Users/houziqiang/sapp/uuid-1.0.4/uuid.c - 定位到报错的第93、94行,找到这两段代码:
REGISTER_LONG_CONSTANT("UUID_TYPE_TIME", UUID_TYPE_DCE_TIME, CONST_PERSISTENT | CONST_CS); REGISTER_LONG_CONSTANT("UUID_TYPE_DCE", UUID_TYPE_DCE_RANDOM, CONST_PERSISTENT | CONST_CS); - 将里面的常量名替换为新版ossp-uuid对应的名称:
REGISTER_LONG_CONSTANT("UUID_TYPE_TIME", UUID_TYPE_TIME, CONST_PERSISTENT | CONST_CS); REGISTER_LONG_CONSTANT("UUID_TYPE_DCE", UUID_TYPE_RANDOM, CONST_PERSISTENT | CONST_CS); - 保存文件后,重新执行
make和make install,编译应该就能顺利完成了。
如果不想修改源码,也可以尝试安装和该PHP扩展版本兼容的旧版ossp-uuid,但改源码显然是更快捷的方案。
内容的提问来源于stack exchange,提问作者qingdi
相关产品推荐
相关产品推荐

