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 が有効になっていることを確認する必要があります。

ただし、私の場合は、これらのパラメーターを無視し、デフォルトで url_fopen を完全に無効にするSuhosin 拡張機能を実行しています。vfsStream ファイルを含める/要求するには、vfs:// スキームを php.ini の Suhosin のホワイトリストに追加する必要があります。suhosin.executor.include.whitelist = "vfs://"

これを追跡するのを手伝ってくれた vfsStream メンテナの Frank Kleine に感謝します。1

于 2011-10-04T10:17:00.117 に答える