3

首先,我需要从 PHP_FUNCTION() 导入一个文件,并将 C 函数中的一些变量传递给导入的 php 文件到用户空间。

例子:

包含_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>";
?>
4

2 回答 2

0

尝试调用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自己在程序中创建结构。

于 2012-06-10T16:16:47.773 回答
0

PHP 7.x

zval nop;
ZVAL_STRINGL(&nop, "return ;", 8, 0);
zend_compile_string(&nop, "NOP");
于 2020-06-24T12:32:07.273 回答