我在ZendStudio中遇到了一个非常奇怪的问题。使用phar扩展名phar:// stream wrapper在phar存档中包含或要求文件将无法在ZendStudio中使用。
这就是我所做的。
给定以下文件结构:
phar/Test.php
pharbuilder.php
usephar.php
具有以下内容:
药业/ 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
很明显,可以找到该文件,但不能包含该文件。我还可以使用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指令或类似的东西。
答案 0 :(得分:0)
此问题现已在Zend Studio 10.6.2中修复。
请注意,如上所述,您需要修改php.ini
文件(位于 - <studio_home>/plugins/com.zend.php.debug.debugger.win32.x86_\resources\php
)
并添加
phar.readonly
= 0