You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP 7.1.17下执行sudo composer install报错:Phar类未找到

解决 sudo composer install 时 Phar 类找不到的问题

首先咱们先明确问题场景:

  • 普通用户执行 composer install 完全正常,输出仅提示废弃包和SSL禁用的警告;
  • 但用 sudo composer install 就直接报错 Fatal error: Uncaught Error: Class 'Phar' not found in /usr/bin/composer:23;
  • 而你通过 php -i 查看到 Phar 扩展明明处于启用状态。

问题根源

这个问题几乎都是普通用户和 root 用户的 PHP 环境不一致导致的:你当前普通用户使用的 PHP 已经开启了 Phar 扩展,但 root 用户的 PHP 环境(可能是另一个版本,或者对应的 php.ini 未启用 Phar)根本没加载这个扩展,而 /usr/bin/composer 脚本默认调用的是 root 环境下的 PHP,自然就找不到 Phar 类了。

具体解决方案

方案1:强制让 sudo 下的 composer 使用普通用户的 PHP

先找到你普通用户正在使用的 PHP 路径:

which php

假设输出是 /usr/local/bin/php,那直接用这个路径的 PHP 来运行 composer:

sudo /usr/local/bin/php /usr/bin/composer install

这样就绕开了 root 环境里有问题的 PHP,直接用你确认过带有 Phar 扩展的版本。

方案2:修复 root 用户的 PHP 配置

  1. 先切换到 root 账号,检查当前 root 使用的 PHP 是否启用了 Phar:
sudo su
php -i | grep Phar

如果输出里看不到 Phar: PHP Archive support => enabled,说明 root 的 PHP 确实没启用 Phar。

  1. 找到 root 对应的 php.ini 文件:
php --ini

查看输出里的 Loaded Configuration File 那一行,就是需要编辑的文件。

  1. 打开这个 php.ini,找到 Phar 相关配置,确保下面的行没有被注释(去掉前面的 ;):
extension=phar.so
phar.readonly = Off  # 部分场景下需要关闭只读,可选但建议加上

保存退出后,再尝试执行 sudo composer install 应该就能正常运行了。

方案3:尽量避免用 sudo 执行 composer

其实不太推荐用 sudo 运行 composer,因为这样生成的文件/目录权限会变成 root,后续普通用户操作这些文件会遇到权限问题。如果不是必须使用 sudo,优先用普通用户执行;如果确实需要,优先选择方案1,避免修改 root 的全局配置。

另外提一句,你普通用户执行 composer 时提示 SSL/TLS 保护禁用,建议检查下 PHP 的 OpenSSL 扩展是否正常启用,或者配置 composer 的 SSL 证书,这样能更安全地下载依赖包。

内容的提问来源于stack exchange,提问作者Fabio_M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:39:44