diff --git a/reference/runkit/reference.xml b/reference/runkit/reference.xml
index 393bdc7a9d..08b975a5d5 100644
--- a/reference/runkit/reference.xml
+++ b/reference/runkit/reference.xml
@@ -1,5 +1,5 @@
-
+
runkit Functions
@@ -83,6 +83,9 @@ show_values();
+
+ &reference.runkit.sandbox;
+
&reference.runkit.functions;
diff --git a/reference/runkit/sandbox.xml b/reference/runkit/sandbox.xml
new file mode 100644
index 0000000000..9996d5d6fb
--- /dev/null
+++ b/reference/runkit/sandbox.xml
@@ -0,0 +1,226 @@
+
+
+
+
+
+ Runkit_Sandbox
+
+ Runkit Sandbox Class -- PHP Virtual Machine
+
+
+
+ &reftitle.description;
+
+
+ Instantiating the Runkit_Sandbox class creates a new thread with its own scope
+ and program stack. Using a set of options passed to the constructor, this environment
+ may be restricted to a subset of what the primary interpreter can do and provide a
+ safer environment for executing user supplied code.
+
+
+
+
+ Constructor
+
+ voidRunkit_Sandbox::__construct
+ arrayoptions
+
+
+
+ option is an associative array containing
+ any combination of the special ini options listed below.
+
+
+
+
+
+ safe_mode
+
+
+ If the outer script which is instantiating the Runkit_Sandbox class
+ is configured with safe_mode = off, then safe_mode
+ may be turned on for the sandbox environment. This setting can not
+ be used to disable safe_mode when it's already enabled in the outer script.
+
+
+
+
+ open_basedir
+
+
+ open_basedir may be set to any path below the
+ current setting of open_basedir. If open_basedir is not set within the global scope,
+ then it is assumed to be the root directory and may be set to any location.
+
+
+
+
+ allow_url_fopen
+
+
+ Like safe_mode, this setting can only be made more restrictive,
+ in this case by setting it to &false; when it is previously set to &true;
+
+
+
+
+ disable_functions
+
+
+ Coma separated list of functions to disable within the sandbox sub-interpreter.
+ This list need not contain the names of the currently disabled functions,
+ they will remain disabled whether listed here or not.
+
+
+
+
+ disable_classes
+
+
+ Coma separated list of classes to disable within the sandbox sub-interpreter.
+ This list need not contain the names of the currently disabled classes,
+ they will remain disabled whether listed here or not.
+
+
+
+
+
+
+
+ Instantiating a restricted sandbox
+
+true,
+ 'open_basedir'=>'/var/www/users/jdoe/',
+ 'allow_url_fopen'=>'false',
+ 'disable_functions'=>'exec,shell_exec,passthru,system',
+ 'disable_classes'=>'myAppClass');
+$sandbox = new Runkit_Sandbox($options);
+/* Non-protected ini settings may set normally */
+$sandbox->ini_set('html_errors',true);
+]]>
+
+
+
+
+
+ Accessing Variables
+
+ All variables in the global scope of the sandbox environment
+ are accessible as properties of the sandbox object.
+ The first thing to note is that because of the way memory
+ between these two threads is managed, object and resource
+ variables can not currently be exchanged between interpreters.
+ Additionally, all arrays are deep copied and any references
+ will be lost. This also means that references between
+ interpreters are not possible.
+
+
+
+ Working with variables in a sandbox
+
+foo = 'bar';
+$sandbox->eval('echo "$foo\n"; $bar = $foo . "baz";');
+echo "{$sandbox->bar}\n";
+if (isset($sandbox->foo)) unset($sandbox->foo);
+$sandbox->eval('var_dump(isset($foo));');
+]]>
+
+
+
+
+
+
+
+
+ Accessing Variables
+
+ Any function defined within the sandbox may be called as
+ a method on the sandbox object. This also includes a few
+ psuedo-function language constructs: eval,
+ include, include_once,
+ require, and require_once.
+ Most notably abset are the language constructs: echo,
+ print, die, and exit.
+ These functions are excluded out of simplicity and to avoid confusion
+ as they would mostly likely be used incorrectly.
+
+
+
+ Calling sandbox functions
+
+str_replace('a','f','abc');
+]]>
+
+
+
+
+
+
+
+ When passing arguments to a sandbox function, the arguments
+ are taken from the outer instance of PHP. If you wish to pass
+ arguments from the sandbox's scope, be sure to access them as
+ properties of the sandbox object as illustrated above.
+
+
+
+ Passing arguments to sandbox functions
+
+foo = 'baz';
+$sandbox->str_replace('a',$foo,'a');
+$sandbox->str_replace('a',$sandbox->foo,'a');
+]]>
+
+
+
+
+
+
+
+
+
+