composer怎么在群晖安装_群晖NAS搭建composer环境方法

3次阅读

群晖 composer 报错主因是 php cli 与 webstation 环境割裂:cli 使用独立 php.ini(如 /etc/php/cli-php82/php.ini),扩展需手动启用或配置 extension=xxx.so;curl、opensslgit、ca 证书等依赖必须单独补全,且须全程使用 webstation 对应 php 路径(如 /volume1/@appstore/php82/usr/bin/php)。

composer怎么在群晖安装_群晖NAS搭建composer环境方法

PHP CLI 扩展缺失导致 composer 启动就报错

群晖的 php 命令默认指向系统旧版(如 PHP 5.6),而 WebStation 用的是另一个路径(如 /volume1/@appstore/PHP82/usr/bin/php);更关键的是,CLI 模式下即使你在 WebStation 图形界面勾选了 curlopenssljson 等扩展,它们也大概率没加载——因为 CLI 读的是独立的 php.ini(通常在 /etc/php/cli-php82/php.ini),不是 WebStation 那套配置。

  • 先确认你真正要用的 PHP 路径:/volume1/@appstore/PHP82/usr/bin/php -v
  • 再查它是否启用了必要扩展:/volume1/@appstore/PHP82/usr/bin/php -m | grep -E "(curl|openssl|json|phar|zlib|mbstring)"
  • 缺哪个,就去 WebStation → PHP 设置 → 对应版本的「扩展」里启用,然后重启该 PHP 版本(不是重启整个 WebStation)
  • 如果仍不生效,手动编辑 CLI 的 php.ini,确保有 extension=curl.so 这类行(路径需核对,不同 PHP 版本模块名可能为 curl.sophp_curl.dll,但群晖是 linux,只认 .so

不能直接用 curl | php 安装 composer.phar

群晖默认没有 curl 命令,或版本太老不支持 https SNI;同时 php 命令若未指定完整路径,会调用错误版本,导致生成的 composer.phar 与 WebStation PHP 不兼容——后续 composer install 可能因扩展缺失、字符编码或 Phar 解包失败而中断。

  • 先通过套件中心安装 SynoCommunity 源的 curl(若无,可用 Entware:opkg install curl
  • 用 WebStation 实际使用的 PHP 路径执行安装:/volume1/@appstore/PHP82/usr/bin/php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
  • 再运行:/volume1/@appstore/PHP82/usr/bin/php composer-setup.php --filename=composer --install-dir=/usr/local/bin
  • 删掉临时文件:rm composer-setup.php

软链 /usr/local/bin/composer 失败:Operation not permitted

这不是权限不够,而是你用了 root 用户执行 ln -sf。群晖的 /usr/local/bin 是只读挂载点(链接到 /volume1/@appstore/),但它允许普通 DSM 用户(如 admin)在此创建符号链接——前提是别用 sudo susudo -i 切换到 root。

  • ssh 登录时直接用你的 DSM 用户名(比如 ssh admin@192.168.1.10),不要切 root
  • 确保 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 diagnose 报 SSL 错误或 git 找不到

composer --version 成功 ≠ 真正可用。很多问题出在网络环节:composer diagnose 会检测 CA 证书路径、HTTPS 连通性、git 命令是否存在——这三项在群晖上全可能失败。

  • The openssl extension is missing:说明 CLI PHP 没加载 openssl.so,回看第一个副标题,检查 CLI 的 php.ini
  • curl: (60) SSL certificate problem:群晖默认没配 CA 证书路径,加一行到 CLI 的 php.inicurl.cainfo = "/etc/ssl/certs/ca-certificates.crt"(路径存在才有效,可先 find / -name "ca-certificates.crt" 2>/dev/NULL 确认)
  • git is not executable:群晖默认没装 git,通过套件中心安装「Git Server」,或 Entware:opkg install git;装完后确认 /opt/bin/git 存在,并把 /opt/bin 加入 $PATH(写入 ~/.profile

群晖上 composer 最容易卡住的地方,从来不是下载命令本身,而是 PHP CLI 和 WebStation PHP 的“双环境割裂”——你得始终明确:哪条命令调用哪个 PHP,它读哪个 php.ini,扩展是否真加载了,以及网络依赖(curl、git、CA 证书)有没有被补全。漏掉任意一环,composer install 就会在某个随机步骤静默失败。

text=ZqhQzanResources