换源后仍慢,主因是composer未实际使用阿里云镜像:全局配置(root)不生效于www用户执行的计划任务或一键部署,且项目级repositories设置、php禁用函数、镜像地址末尾缺斜杠等均会导致失效。

直接执行 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 就能解决 90% 的 Composer 安装慢问题,但前提是 PHP CLI 环境已就绪、函数没被禁用、且命令确实以 root 身份运行。
为什么换源后还是慢?先确认 Composer 是否真在用阿里云镜像
换源命令执行成功 ≠ 实际生效。常见失效场景包括:
-
composer config -g写的是/root/.composer/config.json,而宝塔「计划任务」或「一键部署」功能常以www用户身份运行,它读的是/www/wwwroot/xxx/.composer/config.json(不存在)或/home/www/.composer/config.json(通常也没配) - 执行了换源命令但没加
-vvv验证,误以为生效;正确验证方式是:composer install -vvv 2>&1 | grep "Downloading",看实际请求 URL 是不是mirrors.aliyun.com - 项目级配置覆盖了全局配置:如果
composer.json里已有"repositories"字段,且里面写了"packagist": false或其他非阿里云地址,全局设置会被忽略
必须同步修复的 PHP CLI 环境问题
宝塔默认不启用 PHP 命令行环境,Composer 启动即报错(如 putenv(): Disabled 或 proc_open(): Disabled),此时换源毫无意义。
- 进宝塔「PHP 管理」→ 选对应版本(如 80)→ 「禁用函数」→ 删除
putenv、proc_open、pcntl_signal这三项,保存 - 执行软链接让系统识别 PHP CLI:
ln -sf /www/server/php/80/bin/php /usr/local/bin/php(把80换成你实际用的版本号) - 验证:
php -m | grep -E "openssl|tokenizer"必须有输出,否则 Composer 无法解析composer.json
不同执行场景下该配哪个用户的镜像
不是所有 Composer 命令都走同一个配置文件,得按实际运行用户来配:
- 你在宝塔终端里手动敲
composer install→ 默认是root用户,配composer config -g即可 - 你在网站根目录用
/www/server/php/81/bin/php /usr/local/bin/composer install→ 实际用户仍是root,仍走全局配置 - 宝塔「计划任务」里写了一行
php /www/wwwroot/site/composer.phar install→ 默认以www用户执行,需切换用户后配:sudo -u www composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 宝塔「软件商店」→「一键部署」Laravel → 底层调用的是
www用户 + 面板封装脚本,目前无图形界面入口配其镜像,只能靠上一条命令提前配好
阿里云镜像地址末尾斜杠不能少,且别用已停更的旧地址
以下地址是当前(2026年4月)可用、全量同步、HTTPS 支持良好的镜像:
- 阿里云:
https://mirrors.aliyun.com/composer/(末尾/必须有,缺了会 404) - 腾讯云:
https://mirrors.cloud.tencent.com/composer/ - 华为云:
https://mirrors.huaweicloud.com/repository/php/composer/(注意路径含/repository/php/) - 别用
https://packagist.phpcomposer.com—— 已于 2025 年底停止服务,访问返回 404
换源后首次运行 composer install 若报 hash 不匹配,删掉 vendor 和 composer.lock 重来最干脆。临时测试镜像是否通,用 composer install -vvv --repository-url=https://mirrors.aliyun.com/composer/,这个参数会强制忽略所有配置,只连你指定的地址。











