php扩展名call_user_function段错误

时间:2014-07-01 06:28:15

标签: php php-extension

我的代码如下:

ZEND_FUNCTION(mysql_query1)
{
    zval *args[1];
    MAKE_STD_ZVAL(args[0]);
    ZVAL_STRING(args[0], "hehe", 1); 
    zval *fname = NULL;
    ZVAL_STRING(fname, "print", 0); 

    zval *retval = NULL;

    if (call_user_function(EG(function_table), NULL, fname, retval, 1, args TSRMLS_CC) == SUCCESS) {
    }   
}

正如我测试的那样,它在执行call_user_function时是核心的,我只是想调用它 在我的扩展中php的print()函数,但为什么这会导致一个段?

任何想法?

1 个答案:

答案 0 :(得分:1)

print不是一个函数,而是一个语言结构。如果要打印zval,请使用zend_print_variable(zval)

或者您也可能对PHPWRITE(str, len)php_printf(format, ...)感兴趣。

您的代码段错误与此无关:您没有分配fname zval。