将 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+ 默认禁用未声明插件,必须显式放行:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
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 偶发失败),排查起来特别绕。

















