Composer没有“开发者模式”这一内置概念,所谓开关实为误解;它不识别COMPOSER_DEV_MODE环境变量,唯一有效方式是使用--no-dev参数控制dev依赖安装,并依据composer.lock还原依赖。
Composer 没有“开发者模式”这个内置概念,所谓“开启/关闭开发者模式”是常见误解。
它不读
环境变量,也不提供全局开关。真正起作用的,只有命令行参数和
的内容。
为什么
根本没用
这个变量在 Composer 官方源码里不存在,也不是文档支持的配置项。你看到它,大概率是项目里某个自定义 wrapper 脚本(比如
)自己加的逻辑判断。
运行
和
,确认你调用的是原生二进制,不是封装脚本
会报出非标准环境干扰,比如 alias、wrapper 或 PATH 冲突
依赖管理靠的是参数:加
才跳过 dev 包;不加,就照
里记录的全装
到底做了什么
它只控制“是否安装
里的包”,但不会清理已注册的 autoload-dev 路径,也不会删掉 vendor 里残留的测试文件。
如果
里还存着
的记录,
会跳过安装,但
目录若已存在,就不会被自动删除
配置仍保留在
中,除非你额外跑
类名拼接逻辑(如
)若引用了 dev 包里的类,且该类没被 classmap 收录,上线后可能直接
生产环境必须清理的 vendor 冗余项
光靠
远不够。很多危险路径即使不参与运行,也会暴露结构、泄露哈希、或被路径遍历漏洞利用。
Composer 2.9.6
Composer 2.9.6 是 PHP 生态中高效、稳定的依赖管理工具。此版本在性能与兼容性上进一步优化,改进了依赖解析算法,提升大型项目中的安装与更新速度。它支持并行下载任务,显著减少等待时间,并增强了与私有仓库及镜像源的交互稳定性。同时修复了多项命令行交互与内存使用相关的缺陷,确保在复杂依赖关系下依然可靠运行。无论是新项目初始化还是现有系统维护,Composer 2.9.6 都能为开发者提供流畅、精准的依赖管理体验。
下载
:全部删掉,除非你明确需要
或
在线上执行
、
、
、
、
、
:含所有包版本与 SHA256 哈希,攻击者可据此精准匹配已知漏洞
Linux/macOS 下可用:
;CI 中建议显式
,避免 glob 漏删。
是把双刃剑
它强制 autoloader 只查
,彻底跳过 PSR-4 文件扫描,性能提升明显——但也意味着:任何没被自动发现的类(比如运行时拼接、
后手动 require)都会直接失败。
必须搭配
使用,否则 classmap 不生成
检查项目中是否存在
、
、
动态路径等逻辑
某些包(如旧版 Laravel Mix 插件)会在 post-autoload-dump 阶段动态写入 classmap,漏掉这步会导致线上 500
最容易被忽略的一点:
不影响
类型 autoload,但如果你用了
加载辅助函数,得确保它们全被
收录进 classmap,否则上线就炸。
COMPOSER_DEV_MODEcomposer.lockCOMPOSER_DEV_MODE=0bin/composercomposer --versionwhich composercomposer diagnose--no-devcomposer.lockcomposer install --no-devrequire-devcomposer.lockphpunit/phpunit--no-devvendor/phpunit/phpunitautoload-devvendor/autoload.phpcomposer dump-autoload --no-devnew $classNameClass not found--no-devvendor/bin/phinxdoctrine-migrationsvendor/**/tests/vendor/**/Tests/vendor/**/test/vendor/**/Test/vendor/**/{.git,.gitignore,phpunit.xml,psalm.xml,phpstan.neon}vendor/**/docs/vendor/**/examples/vendor/**/demo/vendor/composer/installed.jsonfind vendor -path '*/tests' -o -path '*/.git' -o -name 'phpunit.xml' -deleterm -rf--classmap-authoritativeautoload_classmap.phpclass_exists($name, false)--optimize-autoloadernew $classNameclass_exists($name, false)include_once--classmap-authoritativefilesfilescomposer dump-autoload --optimize