
禁用函数不清理,composer直接报错退出
宝塔默认禁用 putenv、proc_open、pcntl_signal 这三个函数,而 Composer 启动时必须调用它们——哪怕只是执行 composer --version,也会卡在 Loading config 之后直接报错或静默退出。这不是网络问题,是 PHP 命令行环境本身被阉割了。
- 进宝塔【网站】→【PHP 管理】→ 选中你项目实际用的 PHP 版本(比如 80 或 82)→【禁用函数】
- 把
putenv、proc_open、pcntl_signal这三项**手动删除**(不是取消勾选,是彻底删掉文字) - 点【重载配置】或重启对应 PHP 服务,否则修改不生效
php 命令找不到?本质是 PATH 和软链接没配好
宝塔把 PHP 装在 /www/server/php/82/bin/php 这类路径下,但终端里敲 php -v 却提示 command not found,说明系统根本不知道 php 在哪。Composer 内部依赖 php 命令,它找不到就直接失败。
- 先确认你要用的 PHP 版本号(比如 82),然后执行:
ln -sf /www/server/php/82/bin/php /usr/local/bin/php - 验证:
php -v应输出 PHP 8.2.x;再跑php -m | grep openssl,确保openssl和tokenizer已启用(Composer 强依赖这两项) - 别改
/usr/bin/php的软链——那是宝塔自身管理用的,乱动可能崩面板
全局安装 composer 必须三步到位,少一步就 Permission denied
很多教程漏掉权限设置,结果 composer --version 报 Permission denied。这是因为 /usr/local/bin/composer 文件没有可执行权限,Linux 默认不运行它。
- 在宝塔【终端】里执行:
cd /tmpcurl -sS https://getcomposer.org/installer | phpmv composer.phar /usr/local/bin/composerchmod +x /usr/local/bin/composer - 验证:
composer --version应返回类似Composer version 2.7.7 - 如果提示
/usr/local/bin不可写(某些精简系统),改用:mv composer.phar /root/composer.pharecho "alias composer='php /root/composer.phar'" >> /root/.bashrcsource /root/.bashrc
不换国内镜像源,composer require 就是等超时
官方源 https://packagist.org 在境内基本不可达,composer require laravel/framework 卡在 Downloading... 是常态,10 分钟后报 cURL error 28: Operation timed out 属于正常现象,不是你网络差。
- 立刻设阿里云镜像(同步快、稳定):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 验证是否生效:
composer config -g repo.packagist应返回上面那串 URL - 如果只想给当前项目换源(比如测试私有包),进项目目录后去掉
-g参数:composer config repo.packagist composer https://mirrors.aliyun.com/composer/
真正麻烦的从来不是“装上”,而是装完发现 composer install 仍报错——八成是 PHP 版本没对齐、扩展没启用、或者权限锁死了 vendor 目录。动手前先跑 /www/server/php/82/bin/php -m 看一眼,比反复重装管用得多。










