PHPJM

类 ionCube 工作流的 PHP 编码器 · 纯 PHP 加载器 · 无需 Composer

编码 PHP

默认远程取钥、单文件输出:发给用户只要一个 .phpjm.php,加载器已内置,安装包里没有密钥。

密钥与授权

AES 密钥只保存在你这台编码机。用户只拿到授权码;停用授权码后对方下次启动会取钥失败。

服务器密钥:已配置

已签发授权码

授权码 绑定域名 状态
3F7E-419F-8BDC-D3E0 * 有效
C54E-8DE7-1BAC-B3C7 * 有效
ED65-AA5A-8F2D-1253 * 有效
20D3-E83B-3B05-CE47 * 有效
5550-4399-FAC9-1C48 * 有效
B6A6-B8C0-1A1A-625A * 有效
495C-84B3-8FCC-014F * 有效
3010-89B4-3032-296A * 有效
1B03-AB30-CA9C-EAEF * 有效
1470-2A57-6E0B-1BF0 * 有效
D470-F9D6-8CFF-72A2 * 有效

能力边界

请先读完再把 PHPJM 用到授权系统上。

PHPJM 是什么

自定义容器(AES-256-GCM)+ 纯 PHP 加载器。加密后的文件可在 PHP 7.1~8.2 运行。

PHPJM 不是什么

不是 ionCube,也不是 Zend Guard。二者依赖官方 Zend 引擎扩展(C 语言 .so/.dll)。PHPJM 无法提供同等级别的引擎层保护。

用户能不能看到密钥

远程取钥模式下,安装包里没有密钥。用户打开 PHP 只能看到授权码和你的取钥网址。密钥留在你的服务器,运行时下发且不写用户磁盘。

用户能不能解密

普通用户看不到密钥文件。有服务器权限的人仍可能拦截取钥请求或从内存还原。这能挡住随手翻文件,不是绝对防破解。

授权该怎么做

  • 用远程取钥 + 授权码,停用即可让对方下次无法启动
  • 可绑定用户域名
  • 核心业务尽量做成在线 API

部署清单

  1. 本机:php -S 127.0.0.1:8090 router.php(在 phpjm 目录)
  2. 编码选「远程取钥」,取钥地址改成公网可访问的 .../key.php
  3. 下载发给用户:只要一个 *.phpjm.php(加载器已写进该文件)
  4. 用户机需能访问你的取钥接口;停用授权码即可吊销