【问题标题】:require file using phar stream does not work within ZendStudio使用 phar 流的 require 文件在 ZendStudio 中不起作用
【发布时间】:2013-07-11 01:36:55
【问题描述】:

我在 ZendStudio 中遇到一个非常奇怪的问题。在 ZendStudio 中使用 phar 扩展 phar:// 流包装器在 phar 归档中包含或要求文件将不起作用。

这是我所做的。

给定以下文件结构:

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

很明显,可以找到该文件,但无法包含该文件。我还可以使用 file_get_contents('phar://' . __DIR__ . '/test.phar/Test.php') 访问文件中 Test.php 的内容

另外,我注意到如果我修改此脚本的运行配置并禁用“运行时显示调试信息”复选框,则不会发生这种情况。所以我认为它与 ZendDebugger 有关,但我不太确定。

当我从控制台运行相同的脚本时,一切正常。

我在 ZendStudio 8 和 10 以及 ZS 中提供的所有 php 版本(5.4.11、5.3.21、5.3.3 都在 CGI 和 CLI 中)进行了尝试。

由于我找不到其他人有同样的问题,我认为我做错了什么,并愿意接受任何建议。也许是一些秘密的 php.ini 指令或类似的东西。

【问题讨论】:

  • 我会用 zend 创建一张支持票。
  • 我的同事使用了他的 zend 联系人,他们可以重现该问题。希望他们能尽快修复它。还是谢谢。
  • 你能解决这个问题吗?
  • 很遗憾没有。 :(

标签: php zend-studio zend-debugger phar


【解决方案1】:

此问题现已在 Zend Studio 10.6.2 中得到修复。 请注意,如上所述,您需要修改php.ini 文件(位于-<studio_home>/plugins/com.zend.php.debug.debugger.win32.x86_\resources\php) 并添加 phar.readonly=0

【讨论】:

    猜你喜欢
    • 2013-11-24
    • 1970-01-01
    • 2016-11-11
    • 2016-07-06
    • 2018-07-31
    • 2018-10-07
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    相关资源
    最近更新 更多