Composer卡在loading package information是因默认源访问慢或超时,必须切换国内镜像;执行composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/并验证配置生效,CI环境需显式设置,且部署依赖composer.lock文件。

Composer install 一直卡在 loading package information?
大概率是默认源访问太慢或超时,尤其在国内。别等,直接切中文镜像——这不是“优化”,而是必要操作。
执行以下命令全局切换到阿里云镜像(稳定、同步及时):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
验证是否生效:运行 composer config -g repo.packagist,输出应为 https://mirrors.aliyun.com/composer/。如果返回空或报错,说明配置未写入全局配置文件(通常是 ~/.composer/config.json),可手动检查该文件是否存在并可写。
- 不要用腾讯云或华为云镜像做首发尝试——部分镜像偶尔同步延迟,首次初始化容易因 metadata 不全导致
composer install报Could not find package - 如果项目已有
composer.lock,换源后直接composer install即可,无需重新dump-autoload或删 vendor - CI/CD 环境中建议显式指定镜像,避免依赖本地全局配置,例如在 GitHub Actions 中加一步:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/
新建项目时 vendor/autoload.php 不自动加载?
不是 Composer 没装好,而是没触发自动加载机制——composer install 或 composer update 后才会生成 vendor/autoload.php,纯新建目录后直接写 require 'vendor/autoload.php' 必然报错。
立即学习“PHP免费学习笔记(深入)”;
正确流程只有两步:
- 先运行
composer init或composer create-project laravel/laravel myapp(或其他骨架)——这会生成composer.json并拉取依赖 - 再运行
composer install(哪怕composer.json是空的,也会生成 autoload 文件和基本结构)
常见错误:跳过 install 直接写入口文件,然后发现 Class not found。记住:没有 vendor/autoload.php,PSR-4 自动加载就不存在。
require-dev 里的 phpunit 总是安装失败?
多数情况是 PHP 版本与 PHPUnit 版本不匹配。Composer 不会主动降级适配,它只按 composer.json 中声明的约束硬装,失败时提示模糊(比如 your requirements could not be resolved)。
查清当前环境 PHP 版本:
php -v
然后对照 PHPUnit 官方兼容表(如 PHPUnit 10 要求 PHP ≥8.1),再显式指定版本安装:
- PHP 8.2 →
composer require --dev phpunit/phpunit:^10.5 - PHP 7.4 → 只能用
phpunit/phpunit:^9.6,再高会直接拒绝解析 - 若已存在冲突,先删
composer.lock和vendor,再加--ignore-platform-reqs强制试装(仅调试用,上线前务必移除)
注意:--dev 参数不能省,否则 PHPUnit 会被写进 require(生产环境也装),浪费部署体积。
vendor 目录太大,部署时想跳过 dev 依赖?
composer install --no-dev 是标准解法,但它有个隐藏前提:你必须有现成的 composer.lock 文件。没有 lock 文件时,--no-dev 会忽略 require-dev,但依然要解析全部包依赖树,反而更慢。
- 开发机上务必提交
composer.lock到 Git —— 它记录了精确版本,是--no-dev正常工作的基础 - CI 构建时推荐组合使用:
composer install --no-dev --optimize-autoloader --classmap-authoritative,后两个参数能显著提升运行时性能 - 如果误删了
composer.lock,又想最小化安装,先用composer install --dry-run --no-dev预览将装什么,再决定是否重生成 lock
镜像再快,也救不了缺失 lock 的部署流程——这是最常被忽略的环节。



















