termux中安装composer需先补全php-curl、php-json、php-zlib扩展,再分步下载校验composer.phar并移入$prefix/bin;强制声明platform.php版本、配置国内镜像(键名/斜杠/type三要素齐全)可解决class not found及依赖解析失败问题。

Termux里PHP缺扩展,Composer直接报Class not found
不是Composer装错了,是Termux的PHP默认不带curl、json、zlib——这三个扩展缺一个,composer命令就卡在“Class not found”或“cURL extension is missing”。
- 必须手动补全:
pkg install php-curl php-json php-zlib - 验证是否到位:
php -m | grep -E "curl|json|zlib",三者输出都得有 - 如果
php -v报“cannot load shared library”,说明pkg upgrade没跑全,先执行pkg update && pkg upgrade
手动安装composer.phar,别用管道命令
Termux不支持curl -sS https://getcomposer.org/installer | php这种写法——php进程提前退出,生成的composer.phar文件损坏,后续运行会报PHP Parse error: syntax error。
- 进临时目录:
cd $TMPDIR - 分步下载:
curl -sS https://getcomposer.org/installer -o composer-setup.php - 运行安装器:
php composer-setup.php(成功后生成composer.phar) - 移入PATH:
mv composer.phar $PREFIX/bin/composer - 加执行权限:
chmod +x $PREFIX/bin/composer
composer require总提示“Your requirements could not be resolved”
不是依赖冲突,是Composer误判PHP版本:Termux的php包实际是PHP 8.x,但Composer默认按PHP 7.2+解析platform.php,导致高版本包被跳过。
- 查真实版本:
php -v(例如输出PHP 8.3.12) - 强制声明平台版本:
composer config platform.php 8.3.12 - 再试:
composer require monolog/monolog - 仍失败?加
-vvv看具体哪条约束不满足:composer require monolog/monolog -vvv
国内镜像配置后还是连packagist.org?三要素缺一不可
composer config -g repo.packagist命令静默失效很常见,根本原因是键名、type、URL末尾斜杠三者缺一不可——错一个,就回退官方源,且不报错。
- 必须写全:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/(注意末尾/) - 验证是否生效:
composer config -g repo.packagist,正确输出是类似{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 如果输出为空、
null或报错,说明没写对;常见错误包括:repos.packagist(多s)、漏掉composertype、URL少斜杠 - 项目级优先级更高:只要当前目录
composer.json里有"repositories"字段,全局配置就完全失效
~/下进行,别碰/sdcard或/data——Android会拒绝PHP写入,file_put_contents(./composer.json): failed to open stream八成是路径越界。镜像配置看似简单,但键名拼写、斜杠、type值三个地方任意出错,都会让Composer安静地走回官方源。











