宝塔面板安装 Composer 需四步:建 PHP CLI 软链接、清除 putenv/proc_open/pcntl_signal 禁用函数、手动安装 composer.phar 并设可执行权限、配置阿里云国内镜像源,缺一不可。

宝塔面板里直接点点点装不上 Composer,必须手动打通 PHP 命令行、放开关键函数、装二进制、换国内源——四步缺一不可,否则 composer install 要么报错,要么卡死在 “Loading composer repositories…”。
php 命令在终端里根本不存在?先建软链接
宝塔把 PHP CLI 二进制文件放在 /www/server/php/82/bin/php(版本号按你实际用的填),但终端里敲 php -v 就报 command not found,说明系统 PATH 没指向它。这不是 Composer 的问题,是 PHP 命令链路没通。
- 进宝塔 → 【网站】→【PHP 管理】→ 找到你项目用的版本(比如 82、80 或 74),记下“安装路径”
- 在宝塔【终端】或 SSH 中执行:
ln -sf /www/server/php/82/bin/php /usr/local/bin/php - 验证:
php -v要有输出;再跑php -m | grep openssl和php -m | grep tokenizer,两个都得出现
composer install 卡住不动?检查禁用函数
最典型现象:执行 composer install 后停在 “Loading composer repositories with package information…” 十分钟没反应,或者直接报 putenv() has been disabled for security reasons 或 proc_open(): fork failed。根源是宝塔默认禁用了三个关键函数。
- 进宝塔 → 【网站】→【PHP 管理】→ 选对应 PHP 版本 → 【禁用函数】
- 手动删除这三项(不是取消勾选,是彻底删掉文字):
putenv、proc_open、pcntl_signal - 删完必须点【重载配置】或重启该 PHP 版本服务,否则不生效
- 如果服务器装了多个 PHP 版本(比如站点用 82,CLI 默认调 74),要分别检查每个版本的禁用函数列表
全局安装 composer 的三行命令(别信一键脚本)
宝塔软件商店的“Composer 安装”插件常漏配 PATH 或忽略函数限制,后续排查更麻烦。用以下三行命令最可控:
cd /tmp-
curl -sS https://getcomposer.org/installer | php(生成composer.phar) -
mv composer.phar /usr/local/bin/composer && chmod +x /usr/local/bin/composer(chmod +x不可省,否则权限不足) - 验证:
composer --version应输出类似Composer version 2.7.7 - 如果提示
Permission denied,说明/usr/local/bin不可写,改用:mv composer.phar /root/composer.phar,再加alias composer='php /root/composer.phar'到/root/.bashrc并执行source /root/.bashrc
不换国内镜像源,composer require 就是等超时
官方源在国内基本不可用。composer require laravel/framework 卡在 “Downloading…” 超过 5 分钟后失败,是常态,不是你的网络或服务器问题。
- 全局生效(推荐,一劳永逸):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 验证是否生效:
composer config -g repo.packagist应返回上面那个地址 - 只对当前项目生效(如需测试私有源):
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(在项目根目录下运行,不带-g) - 临时指定(单次命令):
composer install --repository-url=https://mirrors.huaweicloud.com/repository/php/
最容易被忽略的是:Composer 运行时用的 PHP 版本,和你在宝塔网站设置里选的那个,完全是两回事。它只认 $PATH 里的 php,哪怕你网站绑的是 PHP 8.2,终端里 composer install 仍可能调用系统自带的旧版 /usr/bin/php,导致扩展缺失、类找不到、Class not found 报错——所以软链接和函数清理,必须严格对应你项目实际依赖的 PHP 版本。











