镜像配置不生效主因是执行用户错误(如宝塔用www用户而配置在root下)、键名写错(应为repo.packagist而非repos.packagist)、url末尾缺/、或php禁用putenv/proc_open/pcntl_signal函数;三要素缺一即静默回退官方源,验证需输出完整json且实际请求命中镜像域名。

镜像源配置不生效,99% 是因为执行用户不对、键名写错、URL 少了末尾斜杠,或者禁用函数没清干净——不是网络慢,是根本没走镜像。
确认当前执行用户是不是 www
宝塔里点「一键部署」或通过 PHP 管理器跑的 composer install,默认用的是 www 用户,不是 root。你用 root 执行了 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,配置只写进了 /root/.composer/config.json,www 根本读不到。
- 在宝塔终端执行
whoami,看当前是谁 - 查部署日志,找类似
UID=1001的字段,再用id -un 1001查对应用户名 - 确认后切过去重配:
sudo -u www composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
composer config -g repo.packagist 必须写全三要素
漏掉任意一项,配置就静默失效:不报错、不提示,composer install 还是走官方源。
-
-g:必须加,否则只改当前项目目录下的composer.json -
repo.packagist:键名严格为单数repo,不是repos,也不是repositories.packagist -
composer:这是 type 值,不是可选参数;省略它,Composer 2.0+ 会 fallback 到默认源 -
https://mirrors.aliyun.com/composer/:必须 HTTPS,且末尾/不能少;少一个斜杠,请求变成/composerpackages.json,直接 404
验证是否真写进去了:composer config -g repo.packagist,输出应为:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
宝塔 PHP 禁用函数必须手动删,不是取消勾选
即使镜像 URL 正确、用户也对了,composer install 还是卡在 Loading composer repositories 或报 putenv() has been disabled,就是宝塔 PHP 管理里禁用了关键函数。
- 进宝塔 → 【网站】→【PHP 管理】→ 选中你项目用的 PHP 版本(比如 80)→ 【禁用函数】
- 找到
putenv、proc_open、pcntl_signal—— 手动删除这三行文字,不是取消勾选 - 点【重载配置】或重启该 PHP 服务,改完不重载 = 白改
这三个函数的作用很实在:putenv 设环境变量(比如临时内存限制),proc_open 启子进程解压包,pcntl_signal 处理中断信号;少一个,install 就可能静默卡死。
验证镜像是否真在用
别只信 composer config -g 的输出,要看到实际请求路径才放心。
- 在项目目录运行:
composer install -vvv 2>&1 | grep -i "resolving packages" - 或者抓包看真实请求:
strace -e trace=connect,sendto -p $(pgrep -f "composer install") 2>&1 | grep -i "mirrors.aliyun"(需 root 权限) - 如果看到
https://mirrors.aliyun.com/composer/packages.json被访问,才算真正走镜像
最常被忽略的是:镜像配置成功 ≠ 项目能装上依赖。vendor 目录权限、PHP CLI 环境是否就位、openssl/tokenizer 扩展是否启用,这些都得单独验证,缺一环都会让 install 卡在不同阶段。










