Включить или запросить файл vfsStream - PullRequest
3 голосов
/ 22 сентября 2011

Используя vfsStream, могу ли я требовать или включать виртуальный файл?

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

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

Приведенный выше код молча завершается с ошибкой в ​​PHPUnit.

Спасибо.

Ответы [ 2 ]

1 голос
/ 04 октября 2011

В дополнение к ответу Фрэнка о неправильном использовании url (), может быть проблема конфигурации. В стандартной установке PHP вы должны убедиться, что allow_url_fopen включен в вашем php.ini и allow_url_include включен в конфигурации или в вашем скрипте.

В моем случае, однако, я использую расширение Suhosin , которое игнорирует эти параметры и полностью отключает url_fopen по умолчанию. Чтобы включить / запросить файл vfsStream, вам нужно добавить схему vfs: // в белый список Suhosin в php.ini: suhosin.executor.include.whitelist = "vfs://"

Спасибо Фрэнку Кляйну, сопровождающему vfsStream, за помощь в его поиске. 1

1 голос
/ 03 октября 2011

Вы пробовали require_once(\vfsStream::url('root/classes').DIRECTORY_SEPARATOR.'Foo.php');?Вызов vfsStream::create($structure); создает корневой каталог и не использует первую запись в $structures в качестве корневого каталога, поскольку в этом массиве может быть более одного элемента.См. Также документацию на https://github.com/mikey179/vfsStream/wiki/Createcomplexstructures.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...