PHP如何直接运行PHP代码?

PHP运行PHP代码

一、  eval  函数

此函数运行PHP代码变量

函数把字符串按照 PHP 代码来计算。

该字符串必须是合法的 PHP 代码,且必须以分号结尾。

如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false

$symbol = “+”;

$a = 1;

$b = 2;

$c = $a.$symbol.$b;

echo $c.”\n”;

eval(“echo $c;);

此处  直接输出 $c  则是字符串 1+2

eval 方式输出  结果则是  3   相当于 执行了  echo  $a + $b;

注:此函数 官方不建议用,有安全问题

二、流协议加载  

自定义一个流协议  include require 加载协议

function getCode()
{
    return <?php echo www.bubaiso.com’?>’;
}

//自定义协议
class VariableStream
{
    private $string;
    private $position;

    public function stream_open()
    {
        //getCode 接收到参数

        $this->string = getCode();
        $this->position = 0;
        return true;
    }

    public function stream_read($count)
    {
        $ret = substr($this->string, $this->position, $count);
        $this->position += strlen($ret);
        return $ret;
    }

    public function stream_eof()
    {
    }

    public function stream_stat()
    {
    }
}
//注册流协议
stream_wrapper_register(“myStr”, “VariableStream”);

include(“var://);

返回值无法接收

三、 PHP代码 写入文件, 然后用PHP函数调用系统命令

函数  exec  这个函数带返回值

$str = <?php echo www.bubaiso.com’;?>”;
$fileName = run.php’;

//创建文件
$myfile = fopen($fileName, “w”) or die(“Unable to open file!”);

//写入数据
fwrite($myfile, $str);

//关闭
fclose($myfile);

exec(“php $fileName”,$out,$status);
//需要删除的话  这里是执行之后删除文件操作
unlink($fileName);

//$out 如果参数里面有 \n 回车符  返回值是个数组  可以拼接返回数据
$value = ”;
foreach ($out as $v){
    $value .= $v.”\n”;
}

echo $value;

发表评论

电子邮件地址不会被公开。 必填项已用*标注