使用Composer安装PEAR包在PHP7中工作吗


Does using Composer to install PEAR packages work in PHP 7?

在PHP 5.5中,使用Composer安装PEAR包可以很好地工作(当然)。我设置了一个PHP7测试框,看看我们的单元测试是否能在PHP7下通过,我遇到的直接问题是PEAR依赖项不起作用:

Loading composer repositories with package information
Initializing PEAR repository https://pear.php.net
Updating dependencies (including require-dev)
  - Installing packagist/closurecompiler-bin (dev-master d52231c)
    Cloning d52231c49813347010fa605d0f102ada68bb8b4b
  - Installing pear-pear.php.net/structures_graph (1.1.1)
    Loading from cache
  [UnexpectedValueException]
  Failed to extract PEAR package /opt/navigate/vendor/pear-pear.php.net/Structures_Graph/Structures_Graph-1.1.1.tgz to /opt/navigate/vendor/pear-pear.php.net/Structures_Graph. Reason: phar error: tar-base
  d phar "Structures_Graph-1.1.1/tests/BasicGraphTest.php" cannot be registered

  [UnexpectedValueException]
  phar error: tar-based phar "Structures_Graph-1.1.1/tests/BasicGraphTest.php" cannot be registered

我无法理解这一点——这似乎是一个彻头彻尾的PHP7不兼容,没有人在网上写过?

该错误是由包含重复文件名的tar文件引起的,已在php 7.0.5中修复。在5.5和5.6中也存在相同的错误,但在这里,它"只是"导致了内存泄漏,因为php7中的代码更改只检查了无效的返回值,而没有应用于php5.5或5.6。内存泄漏也在php 5.6.20中进行了处理,与php 7.0.5中相同。