composer config -g repo.packagist 命令必须严格拼写正确:键名是 repo.packagist(单数无s),type值“composer”不可省略,URL须以/结尾;错误会导致静默失效、仍走官方源。

composer config -g repo.packagist 命令必须拼写准确且参数完整
命令写错一个字母或漏掉关键参数,就会静默失败——composer install照旧走官方源,卡在 Loading composer repositories 十几秒才超时。最常见错误是:repos.packagist(多了一个 s),或漏掉中间的 composer 类型值。
正确写法只有一条:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
-
repo.packagist是键名,必须单数、不能带s - 第二个参数
composer是 type 值,不是可选;缺了它,Composer 就 fallback 到默认源 - URL 必须以
/结尾,否则请求路径变成/composerpackages.json,直接 404 - 别用已停服的
https://packagist.phpcomposer.com(2023 年起 404)
非 root 用户执行 composer install 失败?先查 ~/.composer 归属
部署常用 deploy 用户跑命令,但常报 Could not write to /home/deploy/.composer/cache 或 Permission denied。这不是镜像问题,而是目录被 root 创建过。
CentOS 不会自动创建 ~/.composer,首次运行 composer 命令时由当前用户创建。若之前用 sudo composer 初始化过,该目录就归 root 了。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 检查归属:
ls -ld /home/deploy/.composer,确认 owner 和 group 都是deploy - 修复命令只有一条:
chown -R deploy:deploy /home/deploy/.composer - 别设
777权限——Composer 会主动拒绝读写,报cache directory is not writable - 宝塔或 cPanel 环境下,若 PHP 禁用了
putenv,需在php.ini中删掉该函数,否则composer install直接中断
脚本自动化配置时,千万别用 sudo 直接跑 composer config -g
很多人写部署脚本时写成 sudo composer config -g repo.packagist ...,结果配置没生效。因为 -g 写入的是当前用户的 ~/.composer/config.json,而 sudo 切到了 root 上下文,实际改的是 /root/.composer/config.json。
普通用户运行 composer install 根本读不到这个配置,仍走官方源。
- 正确做法:确保以目标用户身份执行,例如直接运行
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 若脚本必须由
root调度,改用:sudo -u deploy composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 验证是否生效:
composer config -g repo.packagist输出应为镜像地址,且/home/deploy/.composer/config.json中repositories字段已更新 - 脚本里要加权限检测:
test -d /home/deploy/.composer || mkdir -p /home/deploy/.composer,再chown
多主机/CI/Docker 场景下,仅靠全局配置根本不同步
composer config -g 写入各机器独立的 ~/.composer/config.json,CI 容器没家目录、宝塔用 www 用户、Docker 构建用 runner 用户——它们压根不读同一个文件。
更隐蔽的是:有人用 sudo composer config -g 写进了 root 配置,但 PHP 进程以 www-data 跑,镜像完全不生效。
- 项目级配置才是跨机一致的解法:在
composer.json中显式声明repositories数组 - Composer 2.2+ 必须这样写(首项禁用官方源):
"repositories": [<br> {"packagist.org": false},<br> {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}<br>] -
{"packagist.org": false}必须是独立对象,不能合并进下一项 - 提交
composer.lock,确保所有环境解析依赖路径一致
dev 分支或未收录包仍可能缺失——这时候临时切回官方源不是配置问题,而是镜像本身的数据边界。

















