composer install 报错或 autoload 跳过,首要检查 composer_home 是否被错误覆盖;它必须为绝对路径,不可含 ~ 或环境变量,设后需重启终端,并通过 composer config --list --global 验证路径。

composer install 时提示 Could not find package 或跳过 autoload?检查 COMPOSER_HOME 是否被覆盖
Composer 默认把全局配置、缓存、全局 bin 目录放在用户主目录下的 ~/.composer(Linux/macOS)或 %APPDATA%\Composer(Windows)。但如果你手动设了 COMPOSER_HOME 环境变量,它就会完全接管这个路径——哪怕只写错一个斜杠,都可能导致 composer global require 安装的包找不到、autoload 不生效、甚至 composer self-update 失败。
-
COMPOSER_HOME必须是绝对路径,不能含~或环境变量占位符(如$HOME),Windows 下也不能用%USERPROFILE% - 设完要重启终端/命令行,否则 shell 可能仍读旧值;Windows 用户尤其要注意系统级 vs 用户级变量的区别
- 验证方式:运行
composer config --list --global,看输出顶部是否显示 “Global configuration file” 路径与你预期一致
让 composer global require 的命令全局可用,关键在 PATH 而不是 Composer 配置
很多人以为只要 composer global require laravel/installer 成功,就能直接敲 laravel 命令。其实 Composer 只负责把可执行文件放进 COMPOSER_HOME/vendor/bin(或默认的 ~/.composer/vendor/bin),它不会自动加进系统 PATH。
- Linux/macOS:在
~/.bashrc或~/.zshrc末尾加一行export PATH="$HOME/.composer/vendor/bin:$PATH"(若改过COMPOSER_HOME,请替换为对应路径) - Windows:把
%APPDATA%\Composer\vendor\bin(或你设的COMPOSER_HOME\vendor\bin)加进系统环境变量PATH - 改完后必须新开终端,或运行
source ~/.zshrc(macOS/Linux);Windows 可用echo %PATH%确认是否包含该路径
composer config --global 设置的选项,哪些真能全局生效?
不是所有 config 项都支持 --global。比如 composer config --global repositories.packagist false 是有效的,但 composer config --global minimum-stability dev 这类项目级策略,在没有 composer.json 的目录下运行 composer require 时并不会自动应用——它只影响后续 create-project 或显式指定 --no-interaction 的场景。
- 真正稳定全局生效的:
github-oauth、http-basic、process-timeout、fxp-asset(旧版)等基础行为控制项 - 容易误以为全局生效但实际受限的:
minimum-stability、prefer-stable、platform——它们只在当前项目有composer.json且未显式覆盖时才继承全局值 - 查看当前生效值:运行
composer config --list --global和composer config --list对比,带(global)标记的才是全局设置项
Windows 下 PowerShell 执行 composer global require 后命令不识别?关掉 ExecutionPolicy 限制只是表象
PowerShell 默认禁止运行本地脚本,所以即使 PATH 正确、laravel 文件存在,你也可能看到 The term 'laravel' is not recognized。但这往往不是权限问题,而是 PowerShell 没有重新加载 PATH 缓存,或者你用的是旧版 Composer(
- 先确认
laravel.bat是否真在vendor\bin目录下(Windows 默认只生成 .bat,不依赖 .ps1) - 不要盲目运行
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,多数情况不需要;优先用 CMD 或 Git Bash 测试是否正常 - 如果坚持用 PowerShell,确保终端是「以管理员身份运行」后首次加载 PATH,或手动执行
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
export 或一个系统设置,但 Composer 会层层叠加用户级、全局级、项目级、命令行参数的配置,中间任一环路径错、大小写错、没重启终端,都会让命令“明明装了却用不了”。最省事的排查顺序:先 echo $COMPOSER_HOME(或 echo %COMPOSER_HOME%),再 ls -la $(composer config --global home)/vendor/bin(Linux/macOS)或 dir %APPDATA%\Composer\vendor\bin(Windows),最后看 echo $PATH 里有没有那个 bin 目录。










