将 vendor 目录改为 libs 需在 composer.json 的 config 中设 "vendor-dir": "libs",bin 目录改为 bin 则设 "bin-dir": "bin";二者均需执行 composer install --no-dev 重装,并同步更新自动加载、ci 脚本及 ide 配置。

怎么改 vendor 目录和可执行文件位置
想把 vendor 换成 libs,或让 phpunit 软链接到项目根目录的 bin 下?直接在 composer.json 的 config 字段里写:
-
vendor-dir:设为"libs",所有包就装进libs/,但注意 CI 脚本、IDE 自动索引、自动加载路径都得同步改 -
bin-dir:设为"bin",composer install后bin/phpunit就能直接跑,不用敲vendor/bin/phpunit - 这两个配置只影响当前项目,不继承也不干扰全局;改完别忘了
composer install --no-dev重装一次,否则旧vendor/还在,新目录可能是空的
国内开发必配的网络与镜像配置
不配镜像,composer install 卡在 “Loading composer repositories” 是常态。核心就两条:
-
config.repo.packagist设为{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"},这是目前最稳的国内镜像(原 phpcomposer 已停用) - 如果项目用私有 GitLab,还得加
config.gitlab-domains,比如["gitlab.example.com"],不然 Composer 不知道该走 SSH 还是 HTTPS 认证 - 切忌在 CI 环境里用
--global配镜像——不同项目可能依赖不同源,全局配置容易串包;优先写进项目composer.json或用auth.json配认证
require-dev 依赖装错位置?检查 config.allow-plugins
运行 composer require --dev phpstan/phpstan 却提示 “Plugin installation failed”,大概率是插件被拦了。Composer 2.2+ 默认禁用未声明插件,必须显式放行:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
-
config.allow-plugins设为false就全禁(安全但太死板) - 更合理的是设为数组,例如
{"phpstan/extension-installer": true, "laravel/pint": true},只开你真用的 - 这个配置必须写在
composer.json里,--global设置无效;漏配会导致require-dev包看似装上了,实际插件没激活,命令根本跑不起来
autoload 冲突、CI 缓存失效?看这几个 config 项
多个项目共用 Docker 容器或共享 vendor,vendor/autoload.php 覆盖报错;或者 CI 总是重下包拖慢构建?关键在三个冷门但致命的配置:
-
autoloader-suffix:设为"MyApp",生成的自动加载器叫autoload_MyApp.php,彻底隔离命名冲突 -
cache-dir:CI 中建议设为"/tmp/composer-cache",避免和本地缓存混用导致哈希误判 -
process-timeout:默认 300 秒,在低带宽或高延迟环境(如 GitHub Packages 私有源)容易超时,设成600更稳妥
这些配置不像 require 那样显眼,但一旦出问题,现象分散(类找不到、安装中断、CI 偶发失败),排查起来特别绕。










