首页 > 解决方案 > 无法从 Zend Extension 调用 php 用户定义函数

问题描述

我正在尝试为 PHP 7.2 创建一个 PHP 扩展,我已经设法在 PHP 7.2 中为 5.6 创建我已经根据新的 Zend API 对代码进行了必要的更改,但现在我被困在这一点上,我想要从扩展中调用 php 用户定义函数。

我尝试使用 call_user_function_ex 函数来调用我的用户定义函数。

zval *function_name, *retval_ptr, *param_file, **params[1]; 

TSRMLS_FETCH();

ZVAL_STRINGL(function_name, functionRequire,
        strlen(functionRequire));

ZVAL_STRINGL(param_file, ranKey,
        strlen(ranKey));    

params[0] = &param_file;        
php_printf("%s %s 1st",functionRequire,ranKey);
//RETURN_NULL();
if (call_user_function_ex(CG(function_table), NULL, function_name,
        &retval_ptr, 1, params, 0, NULL TSRMLS_CC) != SUCCESS) {
    php_printf("%s\n",contactInfo );        
    zend_error(E_ERROR, "Function call failed ");
    RETURN_NULL();
}
php_printf("%s %s 2nd",functionRequire,ranKey);
RETURN_NULL();
FREE_ZVAL(function_nameCh);

FREE_ZVAL(function_name);
FREE_ZVAL(param_file);

我尝试在每个语句之后打印值,之后我意识到它在尝试调用“call_user_function_ex”函数时崩溃了。我做错什么了吗,但相同的代码在 PHP 5.6 中运行良好

请帮忙。

标签: phpcphp-extensionphp-7.2

解决方案


推荐阅读