如何使用Runkit_Sandbox打开文件

时间:2014-06-27 14:57:01

标签: php

我使用以下代码打开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

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

fopen()返回资源。解释器之间无法交换资源和对象。您基本上做的是打开沙箱中的文件,并要求将文件句柄从沙箱返回到当前上下文中。这是不可能的。

您可以使用eval():

$sandbox->eval('
  $f = fopen("/var/www/html/test/data.txt", "r");
  // ... rest of the code
');