首先,我需要从PHP_FUNCTION()导入一个文件,并将C函数中的一些变量传递给导入的php文件到用户空间。
例:
include_a_file.c
PHP_FUNCTION(include_a_php_file)
{
zval *var_to_userspace;
char *str;
str = "string send to userspace";
ZVAL_STRING(var_to_userspace, str, 0);
php_require_once("a_file.php"); // <-- how to?
}
a_file.php
<?php
print "<pre>";
vardump($var_to_userspace);
print "</pre>";
?>
尝试调用zend_compile_string()
:
zval nop;
ZVAL_STRINGL(&nop, "return ;", 8, 0);
zend_compile_string(&nop, "NOP" TSRMLS_CC);
这将返回指向zend_op_array
结构的指针,该结构将保存代码的 Zend 操作码。因此,您只需转储一次这些操作码,然后自己在程序中创建zend_op_array
结构。
PHP 7.x
zval nop;
ZVAL_STRINGL(&nop, "return ;", 8, 0);
zend_compile_string(&nop, "NOP");