使用文档
从打包上传到部署上线,全部步骤。认真看完这一步能省掉 90% 的来回沟通。
1. 打包前检查
把项目根目录打成 zip。三个容易出错的地方:
- 不要包含 vendor/ 与 node_modules/:它们通常几万个文件,会直接撞上文件数上限,而且第三方库本来也不需要加密。 请在服务器上用 composer / npm 重新安装。
- 不要包含 .git / .env / 上传目录:既没意义又占体积。
- 不要用符号链接:出于安全考虑,含符号链接的包会被直接拒绝。
# 推荐的打包方式(在项目根目录)
zip -r project.zip . \
-x 'vendor/*' 'node_modules/*' '.git/*' '.env' \
'storage/*' 'runtime/*' 'uploads/*'2. 上传与参数
登录后进「新建加密任务」,选项目、传 zip、勾参数。几个参数的含义:
| 参数 | 说明 |
|---|---|
| PHP 版本 | 决定交付哪个版本的 .so。选错了扩展加载不上,会报 API 版本不匹配。 |
| 混淆强度 | 轻/强两档。强混淆会改变控制流,性能开销更大,但对逆向的阻力也更大。 |
| 保留行号 | 严格模式下报错行号仍然准确;关闭后报错行号会偏移,但逆向线索更少。 |
| 授权到期 | 到了指定日期后,密文在运行时拒绝执行。这是运行时校验,不是文件删除。 |
| 域名绑定 | 限定只在指定域名下运行,防止被搬到别的站。 |
| 机器码绑定 | 限定只在指定机器上运行。换服务器需要重新加密。 |
| 路径绑定 | 限定只能部署在指定绝对路径下。 |
| 排除规则 | 逗号分隔的 glob,例如 config/*,tests/*。 |
3. 交付包里有什么
phpvault-xxxxxxxx-<keyId前8位>.zip
├── README.txt 安装说明(含你的 keyId)
├── report.json 逐文件清单:原大小 / 密文大小 / SHA256
├── enc/ 加密后的项目文件(目录结构与上传的一致)
└── so/
└── phpvault-8.3.so 与你密钥配套的扩展(可能有多份,对应不同 PHP 版本)so/ 里的扩展是和你的密钥绑定的,不能与别人的混用,也不能用官方仓库里随便下载的版本替代。
4. 部署
把 enc/ 下的文件按原结构覆盖到你的站点目录,然后把扩展放到一个固定位置:
# 1) 放扩展(路径自定,建议独立目录)
mkdir -p /usr/local/lib/php/extensions
cp so/phpvault-8.3.so /usr/local/lib/php/extensions/
# 2) 在 php.ini 里加载(注意是 zend_extension,不是 extension)
zend_extension=/usr/local/lib/php/extensions/phpvault-8.3.so
# 3) 确认加载成功
php -m | grep -i phpvault
php -i | grep -i phpvault加载成功会看到 phpvault 出现在模块列表里, 以及扩展打印的版本与 keyId。keyId 必须与 README 里的一致—— 不一致说明拿错了扩展,密文会被解成垃圾且不报错。
5. 常见报错
PHP Warning: Unable to load dynamic library ... phpvault.so版本或架构不匹配。确认:① PHP 版本与文件名一致;② 是 NTS 不是 ZTS(php -i | grep "Thread Safety" 应为 disabled);③ 是 x86_64。
页面输出空白,没有报错最可能是 keyId 不匹配 —— 扩展能加载但解不出正确内容,而这种情况是静默的。用 php -i 看扩展打印的 keyId,与 README 对比。
Fatal error: phpvault: license expired授权到期了。这是你自己在提交任务时设的限制,需要重新加密或联系我们调整(如果套餐支持)。
Fatal error: phpvault: domain not allowed域名绑定不匹配。检查是否换了域名、是否带了 www、是否有 CDN 回源改变了 Host。
上传时报「压缩包内含符号链接,已拒绝」打包时排除了符号链接,或在 macOS 上用 Finder 压缩可能引入 __MACOSX。用命令行 zip 并加 -x 排除。
上传时报「文件数过多」把 vendor/ 与 node_modules/ 排除掉。第三方依赖不需要加密,在服务器上重新安装即可。
6. 几个必须知道的限制
- 加密不可逆,我们不保存明文,也无法还原。请务必备份原始源码。
- 只支持 x86_64 的 NTS 构建,ZTS 与 ARM 暂不支持。
- 只处理 .php / .phtml / .inc;模板与配置文件原样保留。
- 共享版的密钥池内用户可互相解密(定价页有披露)。要独占请选独享版。
- 加密产物是静态的:改了源码要重新加密,不会自动同步。