我使用以下代码打开Runkit_Sandbox文件:
<?php
$options = array(
'open_basedir'=>'/var/www/html/test/',
'allow_url_fopen'=>'true',
);
$sandbox = new Runkit_Sandbox($options);
$sandbox->ini_set('html_errors',true);
$sandbox->fopen('/var/www/html/test/data.txt', 'r');
?>
我已经使用适当的权限在'/ var / www / html / test /'目录中创建了data.txt
文件。但是,我仍然会收到此错误:
Warning: Runkit_Sandbox::__call(): Unable to translate resource, or object variable to current context. in /var/www/html/test/write1.php on line 10
我在这里缺少什么?
答案 0 :(得分:1)
fopen()
返回资源。解释器之间无法交换资源和对象。您基本上做的是打开沙箱中的文件,并要求将文件句柄从沙箱返回到当前上下文中。这是不可能的。
您可以使用eval():
$sandbox->eval('
$f = fopen("/var/www/html/test/data.txt", "r");
// ... rest of the code
');