php - 无法从 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] = ¶m_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 中运行良好
请帮忙。
解决方案
推荐阅读
- android - Android Device Owner Mode by App 使用平台密钥签名(或使用签名的 App 自定义设备策略)
- c - 用于 IAR 编译器内联函数的 C 宏
- ios - 通过它的日期属性从 coredata 中检索数据
- python - 文本提取的文档布局分析
- angular - 在 HTML 中显示 Angular Pipe 可能的选项
- java - ExceptionHandler 导入冲突
- python - 带有值图、Pandas 和 MatPlotLib 的月、年
- wordpress - Wordpress 站点在通过 FTP 迁移到带有 Apache2 的 AWS EC2 Ubuntu 后无法运行
- python - Python:如果条件仅返回最后一个值,则在内部返回语句
- eloquent - 雄辩的查询,结合 where 和 whereBetween