# 安装 ## 依赖 | 依赖 | 是否必需 | 说明 | |---|---|---| | Linux x86_64 / Windows x64 | 必需 | Linux 侧 loader 是 x86_64 ELF;Windows 侧只做加密(用自带的 php.exe) | | **Python / PHP** | **不需要** | 发行包**自带**:`runtime/python` + `runtime/php/<版本>`(含 opcache) | | Linux 的 glibc / 任何系统库 | **不需要** | 自带 `runtime/lib`(含 glibc 与全部依赖 .so),用自带的 ld.so 启动 | | Windows 的 VC++ 运行库 | **不需要** | 自带 `vcruntime140*.dll` | | 授权文件 `license.json` | **必需** | 见 `license/README.md`;没有有效授权无法打包 | 先自检: ```sh ./bin/swcenc doctor # Linux bin\swcenc.cmd doctor # Windows ``` `doctor` 会打印:授权状态、内置运行时的版本数量、各 (loader, PHP) 组合能不能做 strong 加密。 **先看它,再打包。** --- ## 方式一:直接解压使用(不改系统) ```sh tar xzf swcenc-2.0.0-linux-x86_64.tar.gz -C /opt /opt/swcenc-2.0.0-linux-x86_64/bin/swcenc doctor ``` Windows 直接解压 zip 到任意目录(**路径尽量不要带空格和中文**,虽然已做处理, 但少一层变量少一份麻烦): ```bat swcenc-2.0.0-win64\bin\swcenc.cmd doctor ``` Windows 上**不要**用「复制到 C:\\Program Files」后直接双击运行 —— 用命令行调用即可。 --- ## 方式二:安装到 /opt 并建全局命令(Linux) ```sh sudo ./install.sh # 默认 -> /opt/swcenc sudo ./install.sh /usr/local/swcenc ``` 安装脚本做三件事:复制到目标目录、建 `/usr/local/bin/swcenc` 软链、 建 `SWC_CAP_CACHE` 用的可写缓存目录 `/var/cache/swcenc`。 之后任何目录直接: ```sh swcenc doctor ``` --- ## 授权 ```sh ./bin/swcenc machine # 打印本机机器码,发给签发者 # 拿到 license.json 后: cp license.json ./license/license.json ./bin/swcenc license # 确认「✅ 授权有效」 ``` --- ## 目标机需要什么 **加密机**(跑 `swcenc` 的这台):什么都不用装(发行包自带运行时)+ 一份有效授权。 **目标机**(跑加密产物的那台)只需要: ```ini ; php.ini —— 版本必须与加密时选的 PHP 一致,代数必须与 --loader-version 一致 extension=swoole_loader83_nts.so ``` loader 从发行包的 `engine/loader31` / `engine/loader32` 里取,放到目标机的 PHP 扩展目录即可(`engine/loaderpro31` / `loaderpro32` 对应 `--pro` 产物)。 --- ## 常见问题 **Q:`doctor` 显示「未找到授权文件」怎么办?** 按提示把签发的 `license.json` 放进 `license/` 目录,或用 `--license` 指定路径。 **Q:内核太老会不会跑不起来?** 自带的 glibc 需要内核 ≥ 3.2(2012 年之后的都满足)。实测在 Alpine(musl) 上直接可用 —— 因为 glibc 也是自带的。 **Q:能不能装在容器里?** 能跑,但机器码里有网卡 MAC,**容器重建就会变**,会一直要重新授权。 建议装在固定的物理机 / VPS 上。