ZendStudio 内で非常に奇妙な問題に取り組んでいます。phar 拡張 phar:// ストリーム ラッパーを使用して phar アーカイブ内にファイルを含めたり要求したりすることは、ZendStudio 内からは機能しません。
これが私がやったことです。
次のファイル構造があるとします。
phar/Test.php
pharbuilder.php
usephar.php
次の内容で:
phar/Test.php:
class Test {}
pharbuilder.php:
$phar = new Phar(__DIR__ . '/test.phar');
$phar->buildFromDirectory(__DIR__ . '/phar/');
usephar.php:
var_dump(file_exists('phar://' . __DIR__ . '/test.phar/Test.php'));
include('phar://' . __DIR__ . '/test.phar/Test.php');
$test = new Test();
var_dump($test);
ここで、最初に ZendStudio で pharbuilder.php を実行すると (ZS 8: ファイルを右クリックし、PHP スクリプトとして実行)、phar ファイル (test.phar) が正常に作成されます (実行する前に、ini オプションを追加する必要があります)。phar.readonly=0
対応する php.ini に)。ただし、ZS 内で usephar.php を実行すると、エラーが発生します。
bool(true)
Warning: include(): Failed opening 'phar:///somepath/test.phar/Test.php' for inclusion
したがって、明らかに、ファイルは見つかりますが、含めることはできません。を使用して、ファイル内の Test.php のコンテンツにアクセスすることもできます。file_get_contents('phar://' . __DIR__ . '/test.phar/Test.php')
また、このスクリプトの実行構成を変更し、「実行時にデバッグ情報を表示する」チェックボックスを無効にすると、これは発生しないことに気付きました。したがって、ZendDebugger と関係があると思いますが、よくわかりません。
コンソールから同じスクリプトを実行すると、すべて正常に動作します。
ZendStudio 8 および 10 と、ZS が提供するすべての php バージョン (5.4.11、5.3.21、5.3.3 すべて CGI および CLI) でこれを試しました。
同じ問題を抱えている人を他に見つけることができなかったので、私は何か間違ったことをしていると思い、どんな提案も受け入れます. おそらく、いくつかの秘密の php.ini ディレクティブまたはこのようなものです。