简体   繁体   English

PHP 扩展调用另一个扩展函数

[英]PHP extension calling another extension function

I'm writing a PHP extension and wanted to call openssl extension functions from my extension, to be specific, I want to call openssl_x509_read function from inside my extension.我正在编写一个 PHP 扩展,想从我的扩展中调用 openssl 扩展函数,具体来说,我想从我的扩展中调用 openssl_x509_read 函数。 Is it possible?是否可以? And how do I do it?我该怎么做?

Found the answear, here's how to call the function openssl_x509_read from your module:找到了 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;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM