宝塔中PHP命令行需手动配置PATH并删除禁用函数:删putenv、proc_open、pcntl_signal;建软链接ln -sf /www/server/php/82/bin/php /usr/local/bin/php;再用curl安装Composer并设阿里云镜像。

PHP 命令行根本没配好,composer 肯定报 command not found
宝塔装了 PHP,不代表终端里能直接用 php —— 它默认不往系统 PATH 里加路径,which php 很可能返回 /usr/bin/php(甚至压根找不到)。更麻烦的是,即使能跑 php -v,Composer 启动时也会因禁用函数崩溃。
- 进宝塔 → 【网站】→【PHP 管理】→ 选你项目用的版本(比如
82)→ 【禁用函数】里**手动删掉**:putenv、proc_open、pcntl_signal(不是取消勾选,是彻底删除那三行) - 创建软链接让终端认得 PHP:
ln -sf /www/server/php/82/bin/php /usr/local/bin/php(把82换成你实际版本) - 验证:
php -v要有输出,php -m | grep openssl要看到openssl和tokenizer(缺一个 Composer 都跑不起来)
别信“一键安装”,手动三步才稳
宝塔软件商店的 Composer 安装包常漏配 PATH 或忽略函数限制,后续 composer install 卡住、报错、提示 Permission denied 都是它埋的雷。最简可控的方式就是三行命令:
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 里。
不换源=等超时,阿里云镜像是底线配置
官方源在国内基本不可用。composer require laravel/framework 卡在 Downloading... 十几分钟后失败,是常态,不是你的网络问题。
- 全局生效(推荐):
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 总是调错 PHP 版本?它根本不看你网站后台设置
你在宝塔网站设置里选了 PHP 8.2,但终端里 composer install 仍可能用 /usr/bin/php(通常是旧版),导致扩展缺失、类找不到、Class not found 报错——因为 Composer 只看 $PATH 和 php 命令指向哪。
- 查真实路径:
which php和/www/server/php/82/bin/php -v对比版本 - 临时指定版本:
/www/server/php/82/bin/php /usr/bin/composer install - 永久 alias(推荐):
echo "alias composer82='/www/server/php/82/bin/php /usr/bin/composer'" >> /root/.bashrc && source /root/.bashrc,之后用composer82 install
注意:composer.json 里的 "platform": {"php": "8.2.10"} 只影响依赖检查逻辑,不改变实际执行环境;真正起作用的是扩展是否装在 /www/server/php/82/lib/php/extensions/ 下,并在该版本 PHP 中启用。










