composer install 严格按 composer.lock 安装,确保环境一致、快速安全;composer update 忽略 lock 文件,重新解析依赖并更新锁文件,仅用于开发阶段主动升级。

你不需要“学完 Composer 才能用”,只要会运行 composer require 并在入口文件里写对 require __DIR__ . '/vendor/autoload.php';,你就已经能跑通 90% 的 PHP 项目了。
composer install 和 composer update 到底该用哪个?
线上部署、CI/CD、新同事拉代码后——必须用 composer install。它只看 composer.lock,装的版本和上一次完全一致,不解析依赖树,不升级,不改 lock 文件。
你在本地开发想试新功能、修兼容问题、或者明确要升某个包的小版本——才用 composer update。裸跑 composer update 风险极大,它会把所有包都按 composer.json 里的约束重新算一遍,可能连带升级一堆你没注意的间接依赖。
- 只更新某一个包:用
composer update monolog/monolog - 只更新它直连的依赖(不碰其他包):加
--with-dependencies - 生产环境严禁执行
composer update,composer.lock是环境一致性的唯一保障
vendor/autoload.php 路径写错的三种典型表现
不是“找不到文件”,而是类加载失败、CLI 和 Web 行为不一致、IDE 不报错但运行时报 Class 'App\Http\Controller' not found——这些问题八成出在 autoload.php 引入方式上。
错误写法包括:require './vendor/autoload.php';(相对路径在 CLI 下指向当前工作目录,Web 下却可能是 docroot)、require '../vendor/autoload.php';(目录一嵌套就挂)、甚至漏掉这行直接 new 类。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 正确写法只有一种:
require __DIR__ . '/vendor/autoload.php';,__DIR__是绝对路径锚点,稳如磐石 - 必须放在入口文件第一行,不能在
session_start()、header()或 HTML 输出之后 - 别手写
require_once 'vendor/monolog/monolog/src/Monolog/Logger.php';,绕过 autoload 就等于放弃 Composer 的依赖管理能力
国内网络下 composer install 卡在 “Loading composer repositories” 怎么办?
这不是你网络断了,也不是 Composer 坏了,是默认源 https://packagist.org 在国内 DNS 污染 + TLS 握手超时导致的必现问题。等、重试、换网都不治本。
必须换镜像源,且推荐全局配置,避免每个项目重复操作。清华源已逐步停用,阿里云源目前最稳定:
- 全局生效:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 验证是否成功:
composer config -g repo.packagist应输出阿里云地址,不是packagist.org - CI 环境临时用:
composer install --repository=https://mirrors.aliyun.com/composer/ - 别用网上搜到的过期地址,比如
https://packagist.phpcomposer.com已停服
PHP 版本、扩展、Composer 版本三者不匹配的硬性卡点
Composer 2.5+ 要求 PHP ≥ 8.0;如果你用的是 PHP 7.4,要么降级 Composer(不推荐),要么升级 PHP。反过来,用旧版 Composer(如 1.x)去装新版 Laravel,会直接报 lock file version 3 is not supported。
四个扩展缺一不可:openssl(HTTPS 请求)、zlib(解压包)、json(解析 composer.json)、mbstring(处理多字节字符)。少一个,composer install 就会在“Downloading”阶段静默失败,报错信息还特别误导人。
- 检查命令:
php -m | grep -E "openssl|zlib|json|mbstring" - Windows 用户慎用 Git Bash 运行
php composer.phar,路径格式错乱会导致 autoload 加载失败 -
composer.json里写版本号别贪新,^2.0可能升到 2.9,但其中某个小版本可能要求 PHP 8.1 —— 生产环境建议锁死小版本,如"monolog/monolog": "2.9.3"
最常被忽略的其实是 autoload 配置本身:改了 composer.json 里的 psr-4 映射却不运行 composer dump-autoload,新命名空间永远加载不到;或者项目用了老式 classmap,却忘了加 "classmap": ["lib/"] 就直接扔了一堆无命名空间的文件进去——这些细节不处理,autoload 就只是个摆设。

















