【问题标题】:Does using Composer to install PEAR packages work in PHP 7?使用 Composer 安装 PEAR 包是否适用于 PHP 7?
【发布时间】:2016-04-03 21:18:25
【问题描述】:

在 PHP 5.5 中使用 Composer 安装 PEAR 包可以正常工作(当然)。我已经设置了一个 PHP 7 测试框来查看我们的单元测试是否会在 PHP 7 下通过,而我遇到的直接问题是 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

我无法弄清楚这一点 - 它似乎是一个彻头彻尾的 PHP 7 不兼容问题,没有人在网上写过?

【问题讨论】:

  • 最好在 Github 上发布关于 composer 的问题:github.com/composer/composer
  • Composer 抱怨没有名为 pear-pear.php.net/structures_graph 的包。但是,有pear/structures_graph。您是否尝试过运行composer clearcache,然后运行composer install
  • 啊,你是直接使用pear仓库的,这里描述的:getcomposer.org/doc/05-repositories.md#pear 然后忽略我之前的评论,有一个bug。
  • 有趣。似乎 PharData 在 PHP 7.0 附近停止使用一些看似有效的 tar 档案。我已经在 bugs.php.net 上发布了错误报告:bugs.php.net/bug.php?id=71317
  • 我鼓励任何来这里的人对 PHP 错误进行投票 - PHP 开发人员目前正在忽略它..

标签: php composer-php pear


【解决方案1】:

该错误是由包含重复文件名的 tar 文件引起的,已在 php 7.0.5 中修复。 在 5.5 和 5.6 中存在相同的错误,但在这里它“仅”导致内存泄漏,因为 php7 中的代码更改仅检查无效返回值,不适用于 php 5.5 或 5.6。内存泄漏也已在 php 5.6.20 中以与 php 7.0.5 相同的方式解决。

【讨论】:

  • 已确认,升级到 7.0.5 已解决此问题。
猜你喜欢
  • 2023-04-03
  • 2014-04-14
  • 2017-07-25
  • 2015-06-04
  • 2014-04-28
  • 1970-01-01
  • 2021-06-05
  • 2012-10-11
  • 1970-01-01
相关资源
最近更新 更多