我使用的是依赖于包:https://pecl.php.net/package/pcsc的PHP代码
最后,我需要从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: error:“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中出现的/var/tmp/pcsc.c中的每个未声明标识符报告一次:273:54: error:“php_pcsc_conn_res_dtor”未声明(该函数首次使用) le_pcsc_conn_res=zend_register_list_destructors_ex(php_pcsc_conn_res_dtor,NULL,PHP_PCSC_CONN_RES_NAME,module_number); /var/tmp/pcsc/pcsc.c:在函数‘zif_scard_is_valid_tmp’中:/var/tmp/pcsc.c:521:31: error:预期表达式在“SCARDCONTEXT”之前 ZEND_FETCH_RESOURCE(上下文,SCARDCONTEXT,&ctx_res,-1,PHP_PCSC_CTX_RES_NAME,le_pcsc_ctx_res); /var/tmp/pcsc/pcsc.c:在函数‘zif_scard_release’中:/var/tmp/pcsc.c:543:31: error:预期表达式在“SCARDCONTEXT”之前 ZEND_FETCH_RESOURCE(上下文,SCARDCONTEXT,&ctx_res,-1,PHP_PCSC_CTX_RES_NAME,le_pcsc_ctx_res); /var/tmp/pcsc/pcsc.c:函数'zif_scard_list_readers':/var/tmp/pcsc.c:564:31: error:预期表达式在“SCARDCONTEXT”之前 ZEND_FETCH_RESOURCE(上下文,SCARDCONTEXT,&ctx_res,-1,PHP_PCSC_CTX_RES_NAME,le_pcsc_ctx_res); /var/tmp/pcsc.c:580:5: error:函数'add_next_index_string‘add_next_index_string的参数太多(return_value,ptrReader,TRUE); 在包含在/usr/include/main/php.h:37:0的文件中,在/var/tmp/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.c/pcsc.c:609:31: error:预期表达式在“SCARDCONTEXT”之前 ZEND_FETCH_RESOURCE(上下文,SCARDCONTEXT,&ctx_res,-1,PHP_PCSC_CTX_RES_NAME,le_pcsc_ctx_res); /var/tmp/pcsc/pcsc.c:函数'zif_scard_disconnect':/var/tmp/29/pcsc.c:634:29:错误:预期表达式在“SCARDHANDLE”之前 ZEND_FETCH_RESOURCE(hCard,SCARDHANDLE,&conn_res,-1,PHP_PCSC_CONN_RES_NAME,le_pcsc_conn_res); /var/tmp/pcsc/pcsc.c:函数'zif_scard_transmit':/var/tmp/pcsc/pcsc.c:665:29:错误:预期表达式在“SCARDHANDLE”之前 ZEND_FETCH_RESOURCE(hCard,SCARDHANDLE,&conn_res,-1,PHP_PCSC_CONN_RES_NAME,le_pcsc_conn_res); /var/tmp/pcsc.c/pcsc.c:708:58: error:宏"RETVAL_STRING“传递了2个参数,但仅接受1 RETVAL_STRING(e_bytes_to_hex(recvBuffer,recvLen),真); /var/tmp/pcsc.c:708:3:RETVAL_STRING未声明(首次用于此函数) RETVAL_STRING(e_bytes_to_hex(recvBuffer,recvLen),TRUE); /var/tmp/pcsc/pcsc.c:函数'zif_scard_status':/var/tmp/pcsc.c/pcsc.c:731:29: error:预期表达式在“SCARDHANDLE”之前 ZEND_FETCH_RESOURCE(hCard,SCARDHANDLE,&conn_res,-1,PHP_PCSC_CONN_RES_NAME,le_pcsc_conn_res); /var/tmp/pcsc.c:763:85: error:宏"add_assoc_string“传递了4个参数,但仅接受3 add_assoc_string(return_value、"PROTOCOL”、"RAW“、TRUE); /var/tmp/pcsc.c:763:31: error:'add_assoc_string‘未声明(在此函数中首次使用) add_assoc_string(return_value,"PROTOCOL","RAW",TRUE); /var/tmp/pcsc.c:766:85: error:宏"add_assoc_string“传递了4个参数,但仅接受3个add_assoc_string(return_value、”协议“、"T=0",TRUE); /var/tmp/pcsc.c:769:85: error:宏"add_assoc_string“传递了4个参数,但仅接受3个add_assoc_string(return_value、”协议“、"T=1",TRUE); /var/tmp/pcsc.c:777:58: error:宏"add_assoc_string“传递了4个参数,但仅接受3个add_assoc_string(return_value、"ATR”、atrString、TRUE); /var/tmp/pcsc/pcsc.c:函数'zif_scard_errstr':/var/tmp/pcsc.c:799:53: error:宏"RETURN_STRING“传递了2个参数,但只接受1 RETURN_STRING(php_pcsc_error_to_string(in_errno),1); /var/tmp/pcsc/pcsc.c:799:3: error:'RETURN_STRING‘未声明(在此函数中首次使用) RETURN_STRING(php_pcsc_error_to_string(in_errno),1); make:* pcsc.lo Fehler 1错误:‘make’失败
发布于 2021-01-24 06:44:10
最后,我需要从PHP 5更新到PHP 7(够晚了)。遗憾的是,CentOS的REMI不再支持PHP7的PCSC,所以我尝试使用以下命令手动安装它:
如果扩展是兼容的,它将在存储库中,就像所有的其他扩展一样
所以这看起来是个死掉的项目。
https://stackoverflow.com/questions/65862700
复制相似问题