array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'tr', ), 'this' => array ( 0 => 'luasandbox.examples-basic.php', 1 => 'Basic usage for LuaSandbox', ), 'up' => array ( 0 => 'luasandbox.examples.php', 1 => 'Örnekler', ), 'prev' => array ( 0 => 'luasandbox.examples.php', 1 => 'Örnekler', ), 'next' => array ( 0 => 'class.luasandbox.php', 1 => 'LuaSandbox', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'en', 'path' => 'reference/luasandbox/examples.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
Once you've compiled PHP with LuaSandbox support, you can begin using LuaSandbox to safely run user-provided Lua code.
Örnek 1 Execute some Lua code
<?php
$sandbox = new LuaSandbox;
$sandbox->setMemoryLimit( 50 * 1024 * 1024 );
$sandbox->setCPULimit( 10 );
// Register some functions in the Lua environment
function frobnosticate( $v ) {
return [ $v + 42 ];
}
$sandbox->registerLibrary( 'php', [
'frobnosticate' => 'frobnosticate',
'output' => function ( $string ) {
echo "$string\n";
},
'error' => function () {
throw new LuaSandboxRuntimeError( "Something is wrong" );
}
] );
// Execute some Lua code, including callbacks into PHP and into Lua
$luaCode = <<<EOF
php.output( "Hello, world" );
return "Hi", function ( v )
return php.frobnosticate( v + 200 )
end
EOF;
list( $hi, $frob ) = $sandbox->loadString( $luaCode )->call();
assert( $frob->call( 4000 ) === [ 4242 ] );
// PHP-thrown LuaSandboxRuntimeError exceptions can be caught inside Lua
list( $ok, $message ) = $sandbox->loadString( 'return pcall( php.error )' )->call();
assert( !$ok );
assert( $message === 'Something is wrong' );
?>