我正在为一个浏览器应用程序编写系统,该系统将在数据库中存储一些特定的php脚本,然后在需要时将它们提取出来并执行。起初,我尝试使用exec()和管道将从数据库中获取脚本并打印输出的脚本的输出传递给php。这在一个用例中可以工作,但不是所有情况都适用,并且感觉很脆弱,因此我正在寻找更好的方法。
现在,我正在尝试通过在内存中使用PHP文件流来实现这一目标。例如:
执行脚本时没有输出任何内容。这种方法是否可行?如果不行,是否有其他方法可以实现?我试图避免编写临时文件并从中读取,因为我相信访问文件系统会减慢速度。是否有一个URL可以提供“包含”,以便它将读取内存流,就像读取文件一样?
我认为
同时,请不要回答"eval = include = hell"。非管理员用户无法访问存储在数据库中的脚本,我知道这需要在应用程序的生命周期中进行特殊处理。
现在,我正在尝试通过在内存中使用PHP文件流来实现这一目标。例如:
$thing = <<<'TEST'
<?php
$thing = array();
print "Testing code in here.";
var_dump($thing);
?>
TEST;
$filename = "php://memory";
$fp = fopen($filename, "w+b");
fwrite($fp, $thing);
//rewind($fp);
fclose($fp);
include "php://memory";
执行脚本时没有输出任何内容。这种方法是否可行?如果不行,是否有其他方法可以实现?我试图避免编写临时文件并从中读取,因为我相信访问文件系统会减慢速度。是否有一个URL可以提供“包含”,以便它将读取内存流,就像读取文件一样?
我认为
eval()
不能做到这一点,因为如果我记得正确,它只能处理单行代码。同时,请不要回答"eval = include = hell"。非管理员用户无法访问存储在数据库中的脚本,我知道这需要在应用程序的生命周期中进行特殊处理。