ありますRunkit_Sandbox
-動作する可能性があります。これはPHP拡張です。私は行く方法を言うでしょう。
ただし、使用するスーパーグローバルのグローバル変数の状態をリセットするなどして、独自の「サンドボックス」を作成する必要がある場合があります。
class SandboxState
{
private $members = array('_GET', '_POST');
private $store = array();
public function save() {
foreach($members as $name) {
$this->store[$name] = $$name;
$$name = NULL;
}
}
public function restore() {
foreach($members as $name) {
$$name = $this->store[$name];
$this->store[$name] = NULL;
}
}
}
使用法:
$state = new SanddboxState();
$state->save();
// compile your get/post request by setting the superglobals
$_POST['submit'] = 'submit';
...
// execute your script:
$exec = function() {
include(func_get_arg(0)));
};
$exec('script.php');
// check the outcome.
...
// restore your own global state:
$state->restore();