termux安装composer需先手动安装php-curl、php-json、php-zlib扩展,再分步下载校验composer.phar并移入$prefix/bin;必须在~/目录下操作,配置platform.php版本可解决依赖解析失败。

Termux 里装 Composer 不是“下载脚本一跑就完事”,缺一个扩展或走错一个路径,composer 就会报 Class not found、cURL extension is missing 或直接 PHP Parse error —— 根子在 PHP 环境不完整、Termux 的沙盒限制没绕开、国内网络没适配。
php-curl php-json php-zlib 三个扩展必须手动装全
Termux 的 pkg install php 只装核心解释器,不带任何扩展。Composer 启动时依赖 curl(下载包)、json(解析 composer.json)、zlib(解压 zip 包),缺一不可。
pkg install php-curl php-json php-zlib- 验证是否生效:
php -m | grep -E "curl|json|zlib"—— 三行输出都得有 - 如果
php -v报cannot load shared library,先pkg update && pkg upgrade再重试
别用管道安装,分步下载 + 手动执行 composer-setup.php
Termux 的 php 进程在管道中会提前退出,curl -sS https://getcomposer.org/installer | php 必然生成损坏的 composer.phar,后续所有命令都会崩在语法错误上。
- 进临时目录:
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
vendor 写入失败?不是权限问题,是路径越界了
Android 对 /sdcard、/data 等系统路径有严格写入限制,而 Termux 的 $HOME(即 ~/)才是安全沙盒。用错路径会导致 file_put_contents(./composer.json): failed to open stream。
- 所有项目务必建在
~/下:mkdir ~/myapp && cd ~/myapp - 避免
cd /sdcard或cd /data后运行composer init - 检查当前目录可写:
ls -ld .,输出里得有drwx开头且含your-user
require 报 “Your requirements could not be resolved”?其实是 PHP 版本伪装
Termux 的 php 实际是 8.x(如 php -v 显示 PHP 8.3.12),但 Composer 默认按 platform.php 7.2+ 解析依赖,导致高版本包被跳过。
- 查真实版本:
php -v - 强制声明平台版本:
composer config platform.php 8.3.12 - 再试:
composer require monolog/monolog - 仍失败?加
-vvv看具体哪条约束不满足:composer require monolog/monolog -vvv
最常被忽略的是 php-zlib —— 没它,composer install 解压 zip 包直接中断,错误不报 zlib,只报“failed to extract”,得自己往回推。











