php调用php解析器,从变量传递php脚本代码来执行

php从命令行执行时可以使用 -r参数来传递执行的php代码,如果我们从程序中传php脚本来执行就会涉及到引号替换的问题,下面记录一个从输入流传递执行的php代码的方法

$descriptorspec = [
   0 => ["pipe", "r"],  // 启动的命令行可以从这里读取内容
   1 => ["pipe", "w"],   // 启动的命令行会把内容输出到这里
   2 => ['pipe', 'w']    //启动的命令行会把错误信息输出到这里
];
//启动命令行处理程序
$process = proc_open('php -a ', $descriptorspec, $pipes);
// 把内容客情入标准输入管道使用命令行中可以读取
$inputScript='echo 1;';
fwrite($pipes[0], $inputScript);
fclose($pipes[0]);
// 从输出管道中读取命令行输出的内容
$content = stream_get_contents($pipes[1]);
fclose($pipes[1]);
$output_error = stream_get_contents($pipes[2]);
fclose($pipes[2]);
//关闭
$return_value = proc_close($process);
//替换掉开头的输出和空行
// $content=preg_replace('@Interactive shell\s*\n\s*\n@','',$content);
print_r($content);

未经允许不得转载:任鹏个人博客 » php调用php解析器,从变量传递php脚本代码来执行

赞 (0) 打赏

评论 0

取消
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏