Я использую код PHP, который зависит от пакета: https://pecl.php.net/package/pcsc
Наконец, мне нужно обновить PHP 5 до PHP 7 (достаточно поздно). Репозиторий REMI для CentOS, к сожалению, больше не поддерживает PCSC для PHP7, поэтому я попытался установить его вручную с помощью команды:
pecl install channel://pecl.php.net/pcsc-0.3.1
Но я получаю кучу ошибок (см. ниже). Есть ли способ решить эту проблему? Есть ли альтернатива доступу к смарт-картам в PHP (не нашел)?
Ошибки:
/var/tmp/pcsc/pcsc.c:92:35: ошибка: имя неизвестного типа 'zend_rsrc_list_entry' static void php_pcsc_ctx_res_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) {
/var/tmp/pcsc/pcsc.c:113:36: ошибка: имя неизвестного типа 'zend_rsrc_list_entry' static void 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,номер_модуля);/var/tmp/pcsc/pcsc.c:272:53: примечание: каждый необъявленный идентификатор сообщается только один раз для каждой функции, которая появляется в /var/tmp/pcsc/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_context': /var/tmp/pcsc/pcsc.c:521:31: ошибка: ожидаемое выражение перед 'SCARDCONTEXT'
ZEND_FETCH_RESOURCE(context,SCARDCONTEXT, &ctx_res,-1,PHP_PCSC_CTX_RES_NAME,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,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/pcsc.c:564:31: ошибка: ожидаемое выражение перед 'SCARDCONTEXT'
ZEND_FETCH_RESOURCE(context,SCARDCONTEXT, &ctx_res,-1,PHP_PCSC_CTX_RES_NAME,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,SCARDCONTEXT, &ctx_res,-1,PHP_PCSC_CTX_RES_NAME,le_pcsc_ctx_res);/var/tmp/pcsc/pcsc.c: В функции 'zif_scard_disconnect': /var/tmp/pcsc/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/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, recvLen), TRUE);
/var/tmp/pcsc/pcsc.c: В функции 'zif_scard_status': /var/tmp/pcsc/pcsc.c:731:29: ошибка: ожидаемое выражение перед 'SCARDHANDLE'
ZEND_FETCH_RESOURCE(hCard,SCARDHANDLE, &conn_res,-1,PHP_PCSC_CONN_RES_NAME,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, PROTOCOL, RAW, TRUE);
/var/tmp/pcsc/pcsc.c:766:85: ошибка: макрос add_assoc_string передал 4 аргумента, но принимает только 3 add_assoc_string(return_value, PROTOCOL, T=0, TRUE);
/var/tmp/pcsc/pcsc.c:769:85: ошибка: макрос add_assoc_string передал 4 аргумента, но принимает только 3 add_assoc_string(return_value, PROTOCOL, 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' не удалось