mac下为php添加UUID扩展不成功的解决方案

将下载好的uuid扩展下载下来,下载地址


下载后之后编译会不成功,会出现

use of undeclared identifier 'UUID_TYPE_DCE_TIME'

这样的错误


解决办法,因为不知道如何上传文件,这里先简单写一下如何修改,等以后研究好了如何上传文件后将修改后的文件上传上来。

修改未编译前的几个文件,第一个修改config.m4文件:

在第10行:PHP_CHECK_FUNC_LIB(uuid_variant, uuid)后面添加两行内容

   PHP_CHECK_FUNC_LIB(uuid_time, uuid)
   PHP_CHECK_FUNC_LIB(uuid_mac, uuid)

删除第18行之后的下面两行内容:

PHP_SUBST(UUID_SHARED_LIBADD)
PHP_ADD_LIBRARY_WITH_PATH(uuid, $PHP_UUID_DIR/lib, UUID_SHARED_LIBADD)
然后添加下面几行内容:
  AC_MSG_CHECKING(PHP version)
  AC_TRY_COMPILE([], [
#ifdef __APPLE__
#error compiling on darwin
#endif
],
[],
[export UUID_ON_MAC=true])

  if test $UUID_ON_MAC != "true"; then
    PHP_SUBST(UUID_SHARED_LIBADD)
    PHP_ADD_LIBRARY_WITH_PATH(uuid, $PHP_UUID_DIR/lib, UUID_SHARED_LIBADD)
  fi
最后删除如下一行内容:
PHP_SUBST(UUID_SHARED_LIBADD)
第二个文件为php_uuid.h做如下修改
在PHP_FUNCTION(uuid_time);这一段内容之前添加如下内容
  #if HAVE_UUID_TIME
在这一段内容之后添加如下内容
#endif /* HAVE_UUID_TIME */
在PHP_FUNCTION(uuid_mac);这一块内容之前和最后添加分别添加下面两行:
#if HAVE_UUID_MAC
#endif /* HAVE_UUID_MAC */
 PHP_FUNCTION(uuid_parse);
 #if (PHP_MAJOR_VERSION >= 5)
@@ -185,6 +190,15 @@ ZEND_END_ARG_INFO()
 } // extern "C" 
 #endif
这段之后添加添加下面一段内容:
#ifndef UUID_TYPE_DCE_TIME
#ifdef __APPLE__
/* UUID Type definitions */
#define UUID_TYPE_DCE_TIME   1
#define UUID_TYPE_DCE_RANDOM 4
#endif /* __MACOS__ */
#endif /* UUID_TYPE_DCE_TIME */
最后将#endif /* PHP_HAVE_UUID */改为#endif /* HAVE_UUID */

第三个文件tests/uuid_mac.phpt修改为
--TEST--
uuid_mac() function
--SKIPIF--
<?php 


if(!extension_loaded('uuid')) die('skip ');


if(!function_exists('uuid_mac')) die('skip not compiled in (HAVE_UUID_MAC)');


 ?>
--FILE--
<?php
var_dump(uuid_mac("b691c99c-7fc5-11d8-9fa8-00065b896488"));
var_dump(uuid_mac("878b258c-a9f1-467c-8e1d-47d79ca2c01b"));


?>
--EXPECT--
string(12) "00065b896488"
bool(false)
第四个文件tests/uuid_time.phpt修改为
--TEST--
uuid_time() function
--SKIPIF--
<?php 


if(!extension_loaded('uuid')) die('skip ');


if(!function_exists('uuid_time')) die('skip not compiled in (HAVE_UUID_TIME)');


 ?>
--FILE--
<?php
var_dump(uuid_time("b691c99c-7fc5-11d8-9fa8-00065b896488"));
var_dump(uuid_time("878b258c-a9f1-467c-8e1d-47d79ca2c01b"));


?>
--EXPECT--
int(1080374815)
bool(false)
第五个文件uuid.c将uuid_functions修改为
zend_function_entry uuid_functions[] = {
	PHP_FE(uuid_create         , uuid_create_arg_info)
	PHP_FE(uuid_is_valid       , uuid_is_valid_arg_info)
	PHP_FE(uuid_compare        , uuid_compare_arg_info)
	PHP_FE(uuid_is_null        , uuid_is_null_arg_info)
#if HAVE_UUID_TYPE
	PHP_FE(uuid_type           , uuid_type_arg_info)
#endif /* HAVE_UUID_TYPE */
#if HAVE_UUID_VARIANT
	PHP_FE(uuid_variant        , uuid_variant_arg_info)
#endif /* HAVE_UUID_VARIANT */
#if HAVE_UUID_TIME
	PHP_FE(uuid_time           , uuid_time_arg_info)
#endif /* HAVE_UUID_TIME */
#if HAVE_UUID_MAC
	PHP_FE(uuid_mac            , uuid_mac_arg_info)
#endif /* HAVE_UUID_MAC */
	PHP_FE(uuid_parse          , uuid_parse_arg_info)
	PHP_FE(uuid_unparse        , uuid_unparse_arg_info)
	{ NULL, NULL, NULL }
};


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值