【问题标题】:How to install Phar on Ubuntu?如何在 Ubuntu 上安装 Phar?
【发布时间】:2018-12-29 15:23:25
【问题描述】:

我遇到了这样一种情况,如果我在我的 PHP 项目上运行 composer install,我会收到以下错误:

Fatal error: Class 'Phar' not found in /usr/local/bin/composer on line 23

当我阅读composer update class phar not found 时,我尝试通过执行php -i | grep 'phar' 检查是否安装了 Phar,但未安装 Phar。

我使用的是 PHP 5.6。

请问如何在 Ubuntu 上安装 Phar?

[编辑] 当我尝试 apt-get install php-phar 时,我得到:

Package php-phar is a virtual package provided by:
  php7.2-common 7.2.7-1+ubuntu14.04.1+deb.sury.org+1
  php7.1-common 7.1.19-1+ubuntu14.04.1+deb.sury.org+1
  php5.6-common 5.6.36-1+ubuntu14.04.1+deb.sury.org+1
  php7.0-common 7.0.30-1+ubuntu14.04.1+deb.sury.org+1
You should explicitly select one to install.

那么,如果我尝试apt-get install php5.6-common

php5.6-common is already the newest version.
php5.6-common set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 295 not upgraded.

【问题讨论】:

    标签: php ubuntu composer-php phar


    【解决方案1】:

    如果 php5 无法识别 phar.so 库,请尝试更新到 7.x

    phar 库会自动包含在较新的软件包中,并且也会自动配置。希望能帮到你

    【讨论】:

      【解决方案2】:

      尝试运行php -i|grep phar

      如果它显示类似的结果:

      /etc/php/{version}/cli/conf.d/20-phar.ini,
      Registered PHP Streams => https, ftps, compress.zlib, php, file, glob, data, http, ftp, compress.bzip2, phar, zip
      Phar-based phar archives => enabled
      Tar-based phar archives => enabled
      ZIP-based phar archives => enabled
      phar.cache_list => no value => no value
      phar.readonly => On => On
      phar.require_hash => On => On
      

      一切都应该正确安装。

      如果它没有显示任何结果或没有提及/禁用 phar ini 文件,那么您只需在主 php.ini 中包含正确的 ini 并将路径设置为phar.sofiles。

      或者如果您找到 phar.so 文件,只需将其添加到您的主 php.ini 中

      extension=phar.so

      extension=path/to/your/phar.so

      更新 + 额外以确保 ext dir 位置

      如果你掌握了安装使用的ini文件位置和ext dir,会更清楚。

      尝试这样做: php -i | grep ini

      然后在第一/第二行将有您的主 ini 文件。

      在我的机器上显示如下: Loaded Configuration File => /etc/php/{version}/cli/php.ini

      然后执行此命令以确保使用 ext 文件夹或在 main ini 上声明的任何扩展: cat /etc/php/{version}/cli/php.ini|grep ext

      你也可以这样做:

      cat /etc/php/{version}/cli/php.ini|grep phar

      检查主ini文件上的phar相关参数。

      如果这些步骤什么也没显示,我认为如果你在你的机器上重新安装你的 php 包会更简单。

      【讨论】:

      • php -i|grep phar 什么也没显示。如果我运行locate phar.so,则没有结果。我已经尝试在 php.ini 中包含 extension = phar.so 但它并没有解决问题。
      • 尝试从这里手动下载 phar.so:pecl.php.net/package/phar,然后将其放在 /etc/php/extension/ 并手动将其包含在您的主 ini 中。看来您的 php 安装没有设置正确的配置文件。
      • /etc/php 不存在。有 /etc/php5,但它不包含“扩展”子文件夹。
      • 然后你可以下载扩展并自己创建扩展文件夹。只要确保您找到 .ini 的正确路径,我将在上面更新我的答案,以包括定位 ini 文件和 ext 目录的方法。
      • 对不起,自从我上一条消息以来,我试图卸载所有 PHP 和 MySQL 模块并重新安装它们。但是现在我在安装过程中遇到了错误。老实说,我第一次遇到了这个错误,我强行忽略了它,所以它很可能是错误的根源。我觉得即使我用 Phar 解决了问题,我也会有其他问题,因为 mods-available 是空的......
      【解决方案3】:

      您必须先安装扩展程序:

      apt install php-phar
      

      通常它应该自动注册扩展并且它应该可以工作。

      【讨论】:

      • 谢谢你,但不幸的是它不起作用(见我的编辑)
      • 然后检查哪个版本是正确的apt search phar 然后你应该找到所有的包。也许有像php5.6-phar这样的包。
      • php5.6-pharphp5.6-common 的代理,已安装:/
      • 那么问题是我认为您添加了更新的 PHP 源。通常你需要新的 PHP 7.2 一个 PPA。因此,如果您安装它们,如果您使用旧版本,那么您就有了一个问题。所以也许你应该为你的 cli 安装 PHP 7.2
      • 我的项目只运行 PHP 5
      猜你喜欢
      • 1970-01-01
      • 2017-06-29
      • 2015-05-19
      • 2017-11-07
      • 2017-07-12
      • 2011-09-24
      • 2011-11-06
      • 2020-01-27
      • 2014-01-07
      相关资源
      最近更新 更多