1

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 ディレクティブまたはこのようなものです。

4

1 に答える 1

1

この問題は、 Zend Studio 10.6.2で修正されました。上記のように、php.iniファイル( - にあります<studio_home>/plugins/com.zend.php.debug.debugger.win32.x86_\resources\php)を変更して追加 する必要があることに注意してくださいphar.readonly=0

于 2014-06-19T09:09:32.627 に答える