如何解决如何从 zend_compile.c 调用 PHP 函数?
每次以 segmentation fault
或 Fatal error
结束时,我都不知道如何调用现有的 PHP 函数。
免责声明:我在底层编程方面完全没有经验,只是在学习和尝试。
/* zend_compile.c (in a custom function that works well without the code below) */
zend_string *func_name;
zend_ast *func_name_ast,*args_ast_list,*arg_ast;
zend_ast_list *args_list;
znode func_name_node,arg_node;
func_name = zend_string_init("PHPinfo",sizeof("PHPinfo"),0);
func_name_ast = zend_ast_create_zval_from_str(func_name);
zend_compile_expr(&func_name_node,func_name_ast);
arg_ast = zend_ast_create_zval_from_long(0);
zend_compile_expr(&arg_node,arg_ast);
args_ast_list = zend_ast_create_list(2,ZEND_AST_ARG_LIST,func_name_ast,arg_ast);
args_list = zend_ast_get_list(args_ast_list);
zend_compile_func_cuf(NULL,args_list,func_name);
结果:Fatal error: Uncaught TypeError: PHPinfo(): Argument #1 ($function) must be a valid callback,function "PHPinfo" not found or invalid function name
。
同样尝试在哈希表中查找函数失败:
zend_string *func_name,*lcname;
zval *name;
zend_function *fbc;
func_name = zend_string_init("PHPinfo",func_name_ast);
name = &func_name_node.u.constant;
lcname = zend_string_tolower(Z_STR_P(name));
fbc = zend_hash_find_ptr(&CG(function_table),lcname);
结果:segmentation fault
我也尝试过 call_user_function
像这个例子 https://stackoverflow.com/a/13593387/1159013 但它也导致了 segmentation fault
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。