有没有办法在php中的沙盒中执行php代码

Bob*_*ger 22 php module sandbox

我想从php执行一个php脚本,它将使用不同的常量和已经定义的不同版本的类.

是否有沙箱php_module我可以:

sandbox('script.php'); // run in a new php environment
Run Code Online (Sandbox Code Playgroud)

代替

include('script.php'); // run in the same environment
Run Code Online (Sandbox Code Playgroud)

或者proc_open()是唯一的选择吗?

PS:无法通过网络访问该脚本,因此fopen(' http://host/script.php ')不是一个选项.

tro*_*skn 10

runkit,但如果您不需要主进程和子进程之间的任何交互,您可能会发现通过命令行(使用shell_exec)调用脚本更简单.

  • 关于runkit; 它似乎不是沙盒的描述,或者我可能应该说容易.你可以禁止功能,但我宁愿禁止ALL,只提供列表中的所有功能.如果用户需要功能,我可以根据要求手动评估其安全性.似乎唯一的方法是编写一个定制的解释器.如果速度是一个问题,你可以让它将其转换为PHP或其他语言,这实际上是我现在要做的,因为我找不到一个现成的解决方案.干杯! PS.是的,我看到这个Q已经老了.DS. (2认同)

小智 5

GitHub上的一个类可能有所帮助,早期阶段但看起来很有希望.

https://github.com/fregster/PHPSandbox