3

使用 vfsStream,我可以要求或包含一个虚拟文件吗?

$structure = array(
    'classes' => array('Foo.php' => '<?php class Foo {} ?>')
);
\vfsStream::create($structure);

require_once(\vfsStream::url('classes').DIRECTORY_SEPARATOR.'Foo.php');

上面的代码在 PHPUnit 下静默失败。

谢谢。

4

2 回答 2

1

你试过 require_once(\vfsStream::url('root/classes').DIRECTORY_SEPARATOR.'Foo.php'); 吗?调用vfsStream::create($structure);创建根目录,并且不使用其中的第一个条目$structures作为根目录,因为该数组中可能有多个元素。另请参阅https://github.com/mikey179/vfsStream/wiki/Createcomplexstructures上的文档。

于 2011-10-03T17:05:31.570 回答
1

除了弗兰克关于不正确使用 url() 的回答外,可能还有配置问题。在普通 PHP 安装中,您必须确保在 php.ini 中启用了 allow_url_fopen,并且在配置或脚本中启用了 allow_url_include。

然而,就我而言,我正在运行Suhosin 扩展程序,它会忽略这些参数并默认完全禁用 url_fopen。为了包含/需要一个 vfsStream 文件,您需要在 php.ini 中将 vfs:// 方案添加到 Suhosin 的白名单中:suhosin.executor.include.whitelist = "vfs://"

感谢 vfsStream 的维护者 Frank Kleine 帮助我追踪这个问题。1

于 2011-10-04T10:17:00.117 回答