Composer命令“command not found”的根本原因是PATH环境变量未正确配置,导致系统无法定位composer可执行文件;需将composer.phar移至PATH包含的目录(如/usr/local/bin或~/bin),并确保对应shell配置文件(如.zshrc或.bashrc)已正确加载且PATH生效。
Composer命令提示“command not found”
根本原因是系统找不到
可执行文件,不是安装失败,而是PATH没生效或安装路径没加入环境变量。
常见现象:
,但明明执行过
;或者用
能跑,直接敲
就报错。
确认是否真装了:运行
,再看
是否有输出——有说明PHAR存在,问题纯属PATH
别把
放在临时目录(比如
或下载目录),它会被清理或权限限制
推荐放固定位置:
,然后
Mac M1/M2用户注意:
可能被SIP保护,可改用
,并确保该目录在
中(检查
)
Windows上双击安装后cmd仍识别不了
composer
官方Windows Installer确实会改注册表和PATH,但常因权限、终端缓存或用户配置冲突失效。
典型表现:PowerShell里能用,CMD里不能;或者重启后突然失效;又或者提示
。
先运行
,看是否返回路径;没返回就说明PATH没写进去
手动加PATH更可靠:右键“此电脑”→属性→高级系统设置→环境变量→在“系统变量”里找到
→编辑→新建→填入
(默认安装路径)
别只改“用户变量”,系统级工具(如Git Bash、VS Code终端)常读系统PATH
改完必须新开终端窗口,旧窗口的PATH不会自动刷新
Linux/macOS下PATH写了却还是不生效
不是PATH写错了,而是shell配置文件没被正确加载,或者加载顺序被覆盖。
Composer 2.9.6
Composer 2.9.6 是 PHP 生态中高效、稳定的依赖管理工具。此版本在性能与兼容性上进一步优化,改进了依赖解析算法,提升大型项目中的安装与更新速度。它支持并行下载任务,显著减少等待时间,并增强了与私有仓库及镜像源的交互稳定性。同时修复了多项命令行交互与内存使用相关的缺陷,确保在复杂依赖关系下依然可靠运行。无论是新项目初始化还是现有系统维护,Composer 2.9.6 都能为开发者提供流畅、精准的依赖管理体验。
下载
比如你往
加了
,但实际登录用的是
(macOS Catalina+ 默认zsh)。
查当前shell:
;再查配置文件是否被source:
如果用了oh-my-zsh等框架,
末尾可能有
循环引用,导致PATH重置
避免重复追加PATH:用
这类动态写法容易出错,直接写死路径更稳
测试PATH是否生效:
全局安装的包命令(如 laravel/installer)找不到
这其实是Composer的“bin-dir”机制没对齐系统PATH,跟composer命令本身能否运行是两回事。
现象:
成功,但敲
报错;或者
能看到包,就是命令不认。
先确认全局vendor路径:
,输出类似
把这个路径加进PATH(同上一步),且要加在
最前面,否则可能被其他同名命令覆盖
Mac用户注意:Homebrew装的PHP可能自带
命令,和Composer全局装的冲突,用
看来源
权限问题:如果用
,生成的二进制可能属root,普通用户无法执行——绝对不要加sudo
PATH问题最麻烦的点不在怎么加,而在“谁在什么时候读了哪份配置”。同一个终端开三次,可能一次读
,一次读
,一次只读
。别猜,用
看shell类型,再用
开启调试,比反复重启还快。
composerbash: composer: command not foundcurl -sS https://getcomposer.org/installer | phpphp composer.phar installcomposer installwhich phpphp ~/composer.phar --versioncomposer.phar/tmpsudo mv composer.phar /usr/local/bin/composersudo chmod +x /usr/local/bin/composer/usr/local/bin~/bin/$PATHecho $PATH'composer' is not recognized as an internal or external commandwhere composerPathC:\ProgramData\ComposerSetup\bin~/.bashrcexport PATH="$HOME/bin:$PATH"~/.zshrcecho $SHELLgrep -E "^(export|PATH)" ~/.zshrc ~/.bashrc 2>/dev/null.zshrcsource ~/.zshrcexport PATH="$(dirname $(readlink -f $(which php))):$PATH"echo $PATH | tr ':' '\n' | grep -E "(composer|bin)"composer global require laravel/installerlaravelcomposer global listcomposer global config bin-dir --absolute/home/xxx/.composer/vendor/bin$PATHlaravelwhich laravelsudo composer global require.zshenv.zprofile.zshrcps -p $$set -x