必须用webstation绑定的php路径(如/volume1/@appstore/php82/usr/bin/php)安装并运行composer,否则因cli与web环境错配导致扩展缺失、phar失败或ssl证书错误;需验证版本与扩展、用该php路径下载安装器、普通用户创建软链,并运行composer diagnose排查真实依赖问题。

在群晖 NAS 上通过 SSH 安装 Composer,不能直接跑 curl -sS https://getcomposer.org/installer | php——这条命令在 DSM 终端里大概率失败,不是因为你网络不好,而是因为默认 php 指向旧版(如 PHP 5.6),且缺扩展、没 curl、phar.readonly = On、证书路径不对。必须用 WebStation 实际绑定的 PHP 路径来安装和运行。
确认 WebStation 绑定的 PHP 路径和版本
这是整个流程的前提,跳过就白忙:
- 进 DSM → WebStation → PHP 设置 → 找到你项目所用的 PHP 版本(比如
PHP 8.2),记下它的PHP Path(典型路径:/volume1/@appstore/PHP82/usr/bin/php) - SSH 登录后,用该完整路径验证:
/volume1/@appstore/PHP82/usr/bin/php -v,确保输出是PHP 8.2.x - 再查关键扩展是否加载:
/volume1/@appstore/PHP82/usr/bin/php -m | grep -E "(phar|zlib|json|mbstring|openssl|curl)",缺哪个就回 WebStation 对应 PHP 版本的「扩展」页勾选,然后点「重启该 PHP 版本」(不是重启整个 WebStation)
下载并安装 composer.phar 时必须指定 PHP 路径
群晖默认没有 curl 命令,或版本太老不支持 HTTPS SNI;且 php 不加路径会调用错版本,导致生成的 composer.phar 和 WebStation 运行环境不一致。
- 先用 PHP 内置
copy()下载安装器:/volume1/@appstore/PHP82/usr/bin/php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" - 用同一 PHP 路径执行安装脚本:
/volume1/@appstore/PHP82/usr/bin/php composer-setup.php --filename=composer --install-dir=/usr/local/bin --version=2.7.7(v2.7.7兼容 PHP 8.0–8.2,避开 v2.8+ 的严格要求) - 清理临时文件:
rm composer-setup.php
创建软链接时别用 root 用户
ln -sf /path/to/composer /usr/local/bin/composer 报 Operation not permitted?这不是权限不足,而是群晖把 /usr/local/bin 挂为只读——但它允许普通 DSM 用户(如 admin)在此建软链,前提是别切 root。
- SSH 登录时直接用你的 DSM 用户(如
ssh admin@192.168.1.10),不要sudo -i或su - 先把
composer文件放到你有写权限的位置,例如:/volume1/homes/admin/bin/composer - 再执行:
ln -sf /volume1/homes/admin/bin/composer /usr/local/bin/composer - 验证:
which composer应返回/usr/local/bin/composer,composer --version能输出版本号
验证时别只跑 composer --version
这个命令只校验 PHAR 文件头,掩盖了真实问题。很多项目卡在 composer install 卡住几小时,其实是 openssl 没加载、CA 证书缺失或 git 命令找不到。
- 务必运行:
composer diagnose - 若报
The openssl extension is missing:说明 CLI 的php.ini没启用extension=openssl.so,用/volume1/@appstore/PHP82/usr/bin/php --ini查 CLI 配置路径,手动补上 - 若提示
Curl error: SSL certificate problem:群晖默认无 CA 证书包,需下载cacert.pem并在php.ini中设置curl.cainfo = "/path/to/cacert.pem"或openssl.cafile = "/path/to/cacert.pem" - 若提示
git is not installed:需通过 SynoCommunity 源安装git套件,或用docker run方式绕过
最易被忽略的一点:WebStation 和 CLI 的 php.ini 是两套配置,即使你在图形界面勾选了所有扩展,CLI 仍可能不加载——必须单独检查并编辑 CLI 所用的 php.ini 文件。











