2015-10-07 2 views
-1

Я пишу расширение PHP и хотел бы вызвать функции расширения openssl из моего расширения, чтобы быть конкретным, я хочу вызвать функцию openssl_x509_read изнутри моего расширения. Возможно ли это? И как мне это сделать?Расширение PHP, вызывающее другую функцию расширения

+0

Возможный дубликат [PHP. Extension. Вызовите существующую функцию PHP] (http://stackoverflow.com/questions/13592037/php-extension-call-existing-php-function) –

ответ

0

Найденный answear, вот как вызвать функцию openssl_x509_read из модуля:

#define FUNC_OPENSSL_X509_READ   "openssl_x509_read" 

zval *openssl_x509_read(unsigned char *certificate_data, int certificate_data_length) { 
    zval *function_name, *certificate, *param_certificate, **params[1]; 

    TSRMLS_FETCH(); 

    MAKE_STD_ZVAL(function_name); 
    ZVAL_STRINGL(function_name, FUNC_OPENSSL_X509_READ, 
      strlen(FUNC_OPENSSL_X509_READ), 0); 

    MAKE_STD_ZVAL(param_certificate); 
    ZVAL_STRINGL(param_certificate, certificate_data, certificate_data_length, 
      0); 
    params[0] = &param_certificate; 

    if (call_user_function_ex(CG(function_table), NULL, function_name, 
      &certificate, 1, params, 0, NULL TSRMLS_CC) != SUCCESS) { 
     zend_error(E_ERROR, "Function openssl_x509_read failed"); 

     return NULL; 
    } 

    FREE_ZVAL(function_name); 
    FREE_ZVAL(param_certificate); 

    return certificate; 
} 
Смежные вопросы