如何在 Ubuntu 上安装 Phar?

How to install Phar on Ubuntu?

如果我在我的 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.

您必须先安装扩展:

apt install php-phar

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

尝试运行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

更新 + extra 以确保分机目录位置

掌握ini文件位置和安装使用的ext目录会更清楚

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

然后在 first/second 行将是您的主 ini 文件。

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

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

你也可以这样做:

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

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

如果这些步骤没有显示任何内容,我认为如果您在计算机上重新安装 php 包会更简单。

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

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