无法从Zend Extension调用php用户定义函数

时间:2019-01-30 22:54:57

标签: php c php-extension php-7.2

我正在尝试为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中可以正常工作

请帮助。

0 个答案:

没有答案