必须手动安装官方 phar 版 composer,因 apt 安装的版本老旧、无命令别名、path 不生效、易与本地 composer.phar 冲突,且校验缺失存在安全风险。

composer 在 Ubuntu 上不能靠 sudo apt install composer 正常用——系统源里的包老旧、没 composer 命令别名、PATH 不自动生效,还可能和项目本地的 composer.phar 冲突。必须手动装官方 PHAR。
为什么不用 apt 装的 composer
Ubuntu 官方仓库(如 php-composer)通常滞后 1–2 年,比如 2026 年仍可能提供 v2.2.x,而官网已发布 v2.7.x;更重要的是,它安装的是一个包装脚本(/usr/bin/composer),实际调用的是系统 PHP + 自带旧版 PHAR,容易在运行 composer update 时因签名验证失败或插件不兼容直接报错:file_put_contents(/home/user/.composer/cache/repo/https---repo.packagist.org/packages.json): failed to open stream: Permission denied。
- apt 安装后
which composer返回/usr/bin/composer,但composer --version显示的可能是 v1 或极老的 v2 - 它默认不把
~/.composer/vendor/bin加入 PATH,导致composer global require装的命令(如laravel)根本找不到 - 某些扩展(如
ext-openssl)未启用时,apt 版本静默失败,而官方 PHAR 会明确报The openssl extension is required for SSL/TLS protection
正确安装:下载 + 校验 + 全局注册
核心是三步:下载官方安装器 → 用 SHA384 校验完整性 → 移到 /usr/local/bin 并设权限。不推荐管道直装(curl | php),因为跳过校验等于执行不可信代码。
- 先装依赖:
sudo apt update && sudo apt install php-cli php-zip unzip curl git - 下载安装器:
curl -sS https://getcomposer.org/installer -o composer-setup.php - 取官网最新签名:
HASH=$(curl -sS https://composer.github.io/installer.sig) - 校验:
php -r "if (hash_file('sha384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); }"—— 必须看到Installer verified才继续 - 全局安装:
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer - 验证:
composer --version应输出类似Composer version 2.7.7 2026-01-22 14:30:12
常见错误现象与修复
装完运行 composer 报 command not found?不是没装好,是 shell 没刷新 PATH 缓存。Ubuntu 的 /usr/local/bin 默认已在系统 PATH 中,但某些终端(尤其是 GUI 启动的)可能没加载最新环境。
老年康养健身协会源码是基于易优cms开发,适合企业进行老年康养业务使用。程序内核为Thinkphp5.0开发,后台简洁,为老年康养企业而设计,这是一套安装就能建站的程序,不定期更新程序BUG,更新网站功能。我们提供的不仅是模板这么简单,我们还提供程序相关咨询、协助安装等服务。默认不包含小程序插件,需要另外单独购买插件。 模板安装步骤 1、请将安装包ZIP上传到你的网站根目录,在
-
sudo: composer: command not found→ 别用sudo composer,全局安装后普通用户就能用;sudo 只用于安装过程 -
Could not open input file: composer→ 说明你误用了php composer,正确就是直接敲composer(因为已注册为可执行文件) - 运行
composer global require laravel/installer后,laravel命令无效 → 补一句:echo 'export PATH="$HOME/.composer/vendor/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc - 升级时卡住或报签名错误:
sudo composer self-update可能失败,此时应重装:sudo rm /usr/local/bin/composer && sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
要不要用 snap 或 Docker Compose?
不要。snap 版 composer 是沙盒隔离的,无法访问宿主机项目目录,composer install 会报 Permission denied;Docker Compose 是另一个工具(docker-compose),和 PHP 的 composer 完全无关,名字像纯属巧合。
真正要注意的是:如果你在 CI/CD 环境或容器里装,别省略校验步骤——网络中间人攻击曾真实发生过,用哈希比对是唯一低成本防御方式。









