如何在Ubuntu上安装Phar?

4
我遇到了这样的情况,当我在我的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.
3个回答

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.so文件。

或者,如果您找到了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

然后执行此命令,以确保在主要ini上使用了ext文件夹或任何已声明的扩展名:

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,但它并没有解决问题。 - Arnaud
1
尝试从此处手动下载phar.so:https://pecl.php.net/package/phar,然后将其放置在/etc/php/extension/上,并在您的主ini文件中手动包含它。看起来您的php安装没有设置正确的配置文件。 - Charis
/etc/php不存在。有/etc/php5,但它不包含“extension”子文件夹。 - Arnaud
1
然后您可以下载扩展并自己创建扩展文件夹。只需确保找到.ini文件的正确路径,我将更新我的答案以包括查找ini文件和ext目录的方法。 - Charis
我怀疑你的安装包可能损坏或编译不正确。你尝试过清理dpkg缓存并重新安装吗?或者确保你使用了正确的发行版或ppa。无论哪种方式,它都变成了另一个问题。我认为这只是你的php安装出了问题。 - Charis
显示剩余2条评论

1

您首先需要安装扩展程序:

apt install php-phar

通常情况下,它应该自动注册扩展并正常工作。

谢谢您,但不幸的是它不起作用(请参见我的编辑) - Arnaud
然后检查哪个版本是正确的 apt search phar 然后你应该找到所有的包。也许有一个叫做 php5.6-phar 的包。 - René Höhle
php5.6-pharphp5.6-common 的代理,而后者已经安装了 :/ - Arnaud
我的项目只能在 PHP 5 上运行。 - Arnaud
php-commonphp5-commonphp5.6-common - Arnaud
显示剩余2条评论

0
如果php5无法识别phar.so库,请尝试升级到7.x版本。
较新的软件包中已自动包含了phar库,并将自动配置。希望这能有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接