微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PECL PCSC 安装在 PHP 7.4

如何解决PECL PCSC 安装在 PHP 7.4

我正在使用依赖于包的 PHP 代码https://pecl.php.net/package/pcsc

最后我需要从 PHP 5 更新到 PHP 7(足够晚了)。不幸的是,CentOS 的 REMI 存储库不再支持 PHP7 的 PCSC,所以我尝试使用以下命令手动安装它:

pecl install channel://pecl.PHP.net/pcsc-0.3.1

但是我收到了一堆错误(见下文)。有没有办法解决这个问题?有没有其他方法可以在 PHP 中访问智能卡(没有找到)?

错误

/var/tmp/pcsc/pcsc.c:92:35: 错误:未知类型名称 'zend_rsrc_list_entry' 静态无效 PHP_pcsc_ctx_res_dtor(zend_rsrc_list_entry *rsrc TSrmlS_DC) {

/var/tmp/pcsc/pcsc.c:113:36: 错误:未知类型名称 'zend_rsrc_list_entry' 静态无效 PHP_pcsc_conn_res_dtor(zend_rsrc_list_entry *rsrc TSrmlS_DC) {

/var/tmp/pcsc/pcsc.c:在函数“zm_startup_pcsc”中: /var/tmp/pcsc/pcsc.c:272:53: 错误:'PHP_pcsc_ctx_res_dtor' 未声明 (第一次在这函数中使用)
le_pcsc_ctx_res=zend_register_list_destructors_ex(PHP_pcsc_ctx_res_dtor,NULL,PHP_PCSC_CTX_RES_NAME,module_number);

/var/tmp/pcsc/pcsc.c:272:53:注意:每个未声明的标识符是 对于它出现的每个函数只报告一次 /var/tmp/pcsc/pcsc.c:273:54: 错误:'PHP_pcsc_conn_res_dtor' 未声明(首次在此函数中使用)
le_pcsc_conn_res=zend_register_list_destructors_ex(PHP_pcsc_conn_res_dtor,PHP_PCSC_CONN_RES_NAME,module_number);

/var/tmp/pcsc/pcsc.c:在函数“zif_scard_is_valid_context”中: /var/tmp/pcsc/pcsc.c:521:31: 错误:之前的预期表达式 'SCARDCONTEXT'
ZEND_FETCH_RESOURCE(context,SCARDCONTEXT,&ctx_res,-1,le_pcsc_ctx_res);

/var/tmp/pcsc/pcsc.c:在函数“zif_scard_release_context”中: /var/tmp/pcsc/pcsc.c:543:31: 错误:之前的预期表达式 'SCARDCONTEXT'
ZEND_FETCH_RESOURCE(context,le_pcsc_ctx_res);

/var/tmp/pcsc/pcsc.c:在函数“zif_scard_list_readers”中: /var/tmp/pcsc/pcsc.c:564:31: 错误:之前的预期表达式 'SCARDCONTEXT'
ZEND_FETCH_RESOURCE(context,le_pcsc_ctx_res);

/var/tmp/pcsc/pcsc.c:580:5: 错误:参数太多无法运行 'add_next_index_string' add_next_index_string(return_value,ptrReader,TRUE);

在 /usr/include/PHP/main/PHP.h:37:0 包含的文件中, 来自 /var/tmp/pcsc/pcsc.c:23: /usr/include/PHP/Zend/zend_API.h:432:14: 注意:此处声明 ZEND_API int add_next_index_string(zval *arg,const char *str);

/var/tmp/pcsc/pcsc.c:在函数“zif_scard_connect”中: /var/tmp/pcsc/pcsc.c:609:31: 错误:之前的预期表达式 'SCARDCONTEXT'
ZEND_FETCH_RESOURCE(context,le_pcsc_ctx_res);

/var/tmp/pcsc/pcsc.c:在函数“zif_scard_disconnect”中: /var/tmp/pcsc/pcsc.c:634:29: 错误:之前的预期表达式 '剑柄'
ZEND_FETCH_RESOURCE(hCard,SCARDHANDLE,&conn_res,le_pcsc_conn_res);

/var/tmp/pcsc/pcsc.c:在函数“zif_scard_transmit”中: /var/tmp/pcsc/pcsc.c:665:29: 错误:之前的预期表达式 '剑柄'
ZEND_FETCH_RESOURCE(hCard,le_pcsc_conn_res);

/var/tmp/pcsc/pcsc.c:708:58: 错误:宏“RETVAL_STRING”通过 2 参数,但只需要 1
RETVAL_STRING(e_bytes_to_hex(recvBuffer,recvLen),TRUE);

/var/tmp/pcsc/pcsc.c:708:3: 错误:'RETVAL_STRING' 未声明(首先 在这函数中使用)RETVAL_STRING(e_bytes_to_hex(recvBuffer,TRUE);

/var/tmp/pcsc/pcsc.c:在函数“zif_scard_status”中: /var/tmp/pcsc/pcsc.c:731:29: 错误:之前的预期表达式 '剑柄'
ZEND_FETCH_RESOURCE(hCard,le_pcsc_conn_res);

/var/tmp/pcsc/pcsc.c:763:85: 错误:宏“add_assoc_string”通过 4 参数,但只需要 3 add_assoc_string(return_value,"PROTOCOL","RAW",TRUE);

/var/tmp/pcsc/pcsc.c:763:31: 错误:'add_assoc_string' 未声明 (第一次在这函数中使用) add_assoc_string(return_value,TRUE);

/var/tmp/pcsc/pcsc.c:766:85: 错误:宏“add_assoc_string”通过 4 参数,但只需要 3 add_assoc_string(return_value,"T=0",TRUE);

/var/tmp/pcsc/pcsc.c:769:85: 错误:宏“add_assoc_string”通过 4 参数,但只需要 3 add_assoc_string(return_value,"T=1",TRUE);

/var/tmp/pcsc/pcsc.c:777:58: 错误:宏“add_assoc_string”通过 4 参数,但只需要 3 add_assoc_string(return_value,"ATR",atrString,TRUE);

/var/tmp/pcsc/pcsc.c:在函数“zif_scard_errstr”中: /var/tmp/pcsc/pcsc.c:799:53: 错误:宏“RETURN_STRING”通过 2 参数,但只需要 1
RETURN_STRING(PHP_pcsc_error_to_string(in_errno),1);

/var/tmp/pcsc/pcsc.c:799:3: 错误:'RETURN_STRING' 未声明(首先 在这函数中使用)
RETURN_STRING(PHP_pcsc_error_to_string(in_errno),1);

make: *** [pcsc.lo] Fehler 1 错误:`make' 失败

解决方法

最后我需要从 PHP 5 更新到 PHP 7(足够晚了)。不幸的是,CentOS 的 REMI 存储库不再支持 PHP7 的 PCSC,所以我尝试使用以下命令手动安装它:

如果扩展是兼容的,它将在存储库中,因为所有 other extensions

所以这看起来像是一个死项目。

,

我是此扩展程序的开发者,并且它已经更新了几个星期。

只需使用以下命令安装即可:

pecl install pcsc-beta

您也可以从 https://github.com/pcsc-for-php/pcsc 获取代码并自行编译。您将在 GitHub 页面上找到说明。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。