termux中安装composer需先补全php扩展(curl、json、zlib),再分步下载校验composer.phar并移入path;操作须在~/目录下进行,配置国内源及强制声明platform.php版本可解决常见报错。

Termux里装Composer,先确认PHP能不能跑
不能直接下安装包就开干——Termux的PHP默认不带curl和json扩展,缺一个composer就卡在“Class not found”或“cURL extension is missing”。
-
pkg install php只装基础PHP,没开扩展 - 必须补全:
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
运行时 Permission denied 或 vendor 写入失败
不是权限问题,是Termux的$HOME和$PREFIX隔离太严——composer init或require时,vendor/默认建在当前目录,但某些路径(比如/sdcard挂载点)Android会拒绝PHP写入。
- 永远在
~/下操作:mkdir ~/myproj && cd ~/myproj - 避免用
cd /sdcard或cd /data等非Termux沙盒路径 - 如果提示
file_put_contents(./composer.json): failed to open stream,八成是当前目录不可写,用ls -ld .确认权限 - 国内源加速(防超时):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
composer require 报错 “Your requirements could not be resolved”
不是依赖冲突,是PHP版本伪装——Termux的php包实际是PHP 8.x,但Composer默认按PHP 7.2+解析composer.json里的platform.php,导致高版本库被跳过。
- 查真实PHP版本:
php -v(如显示PHP 8.3.12) - 强制声明平台版本:
composer config platform.php 8.3.12 - 再
composer require monolog/monolog就能正常解析 - 若仍失败,加
-vvv看具体哪条约束不满足:composer require monolog/monolog -vvv
最常被忽略的是php-zlib扩展——没它,composer install解压zip包直接崩,报错像unable to decompress gzipped phar archive,但错误信息里根本没提zlib。装完记得php -m再扫一眼。










