Premium 版本
两种交付渠道:ionCube 与签名源码
NextPDF Pro 和 Enterprise 以两种形式交付,你可以把它们视为同一产品的两条 渠道:
- ionCube 编码版 —— 可安装的 PHP,其源码经过编码,在运行时通过 ionCube Loader 运行。
- 签名的明文源码 —— 可读的 PHP 源码,经过加密签名,便于你验证它是真实且未被修改的。
两条渠道承载相同的许可与相同的权利( NextPDF Commercial License Agreement 同时适用于两者, 而能够获得可读源码绝不等于获准复制或再分发它)。它们之所以并存,是因为两类客户要解决的是两种不同的问题,我们为每条渠道定价,正是为了匹配它所带来的权衡—— 而不是因为其中一条比另一条功能更多。本页解释其中的考量,让你能在充分知情的前提下做出选择。关于编码版的实际安装步骤,请参阅 设置 ionCube Loader。
为什么在 PHP 中保护源码是一个真实的难题
标题为“为什么在 PHP 中保护源码是一个真实的难题”的章节PHP 以源码形式分发和运行。与那些在分发前会编译为不透明的二进制或字节码的语言不同,PHP 软件包的工作源码本身就是你安装的东西——运行时直接读取它。 这正是 PHP 的一大优势:它透明、易于检视、易于打补丁,也是其开源生态如此充满活力的重要原因。
但这也是为什么一个商业 PHP 项目所面对的保护难题,要比别处的同类项目更棘手。 投入到一款深度、专业化引擎中的心血——多年的标准工作、各种边界情形、测试套件 ——都存在于默认会以明文形式流通的源码之中。这份投入是一项商业秘密: 它是资助持续开发的实践性专门技术,也是一项受法律承认与保护的资产。保护它并不是为了对用户有所隐瞒;而是为了让这份工作能够持续获得资金支持。
这也是为什么在那些分发已编译或字节码产物的生态中,源码保护本就更容易 ——Java 是常见的例子:所分发的形式本就与工作源码隔了一层,因此商业供应商需要守护的内容更少。这使得在那里为深度、专业化的商业工具提供资金更为直接, 而大量严肃的 PHP 工作却不得不依赖开源社区的善意。我们不认为这是一条自然法则。 PHP 同样配得上专业的、积极维护的、达到标准级别的工具——而让源码变得可防御, 正是让资助这项工作变得可持续的关键。
开放内核,付费高级
标题为“开放内核,付费高级”的章节NextPDF 的答案是开放内核加付费高级版。你所依赖构建的引擎——
nextpdf/core——采用 Apache-2.0 并保持开放;你可以阅读它、复刻它,
也可以将其用于商业用途。NextPDF Pro 和 Enterprise 是私有版本,
它们带来的收入正是用来支付积极维护、标准符合性以及后续功能开发的费用。
这种划分是有意为之:它让我们既能服务那些需要专业、B2B 级别能力的团队,
又能对个人开发者保持友好,因为我们自己最初就是热爱自由软件的独立开发者。
开放那一半背后的考量,见
开放内核,无锁定;本页谈的是
付费那一半如何送达你手中。
ionCube 渠道——以保护换取更低的价格
标题为“ionCube 渠道——以保护换取更低的价格”的章节对大多数客户而言,ionCube 编码版渠道是默认选择。对源码进行编码——一种公认的提高篡改与盗用成本的方式——让我们能够以低得多的开销保护高级版代码: 更少的定制化源码处理、更少的分发与访问管理,以及比大规模守护明文源码更轻的法律与执法负担。这些节省是实实在在的,我们将其回馈给你。
代价是不大的运行时开销:Loader 会在 PHP 运行时解码已编码的文件, 这会增加一些开销。我们在价格中反映了这一权衡,好让你能诚实地评估它,而不是日后才发现。实际上,这点开销通常很小,在典型部署中往往可以忽略不计——而在一台已经为其他软件运行 ionCube Loader 的主机上,更是几乎不成问题。 对性能敏感的工作负载应针对自身的实际情况进行基准测试;对于绝大多数部署, 编码版渠道就是成本更低的那个选项,这正是我们希望达成的供需匹配。设置 Loader 是一次性步骤,记录在 设置 ionCube Loader。
签名源码渠道——面向监管、审计与供应链保障
标题为“签名源码渠道——面向监管、审计与供应链保障”的章节有些客户无法在其运行时中接受已编码的代码。处于强监管之下,或有严格的供应链安全与审计要求的组织,需要阅读、审阅并验证自己所运行的内容—— 而且他们通常也具备这些要求所隐含的预算。为此我们提供签名的明文源码 渠道:相同的版本以可读源码交付,经过加密签名,以便验证其来源与完整性。
这直接对应了现代供应链安全对软件处理方式的期望:以数字签名的软件包交付源码, 使用前先验证签名,并在保障与审计方面优先采用可审阅的源码而非不透明的产物 (NIST SP 800-204D)。在这里,代码并非靠编码来保护——而是靠法律与合同来保护:它仍然是 PATEON(NextPDF 背后的公司)的机密商业秘密, 你能做什么、不能做什么,由 NextPDF Commercial License Agreement 规定。 能够阅读源码,绝不等于获准复制、再分发或重新授权它。
这条渠道成本更高,原因与 ionCube 那条恰好相反:它消除了运行时开销,但把保护负担转移回合同、信任与管理之上——这正是我们所承担的成本,好让受合规约束的客户能够履行其义务。
连通性与许可执行
标题为“连通性与许可执行”的章节两条渠道在应用运行时如何检查许可这一点上也有所不同,而对于离线或空气隔离(air-gapped)的部署而言,这通常是决定性因素。
ionCube 渠道会定期在线核验其许可。 通过编码版渠道交付的高级版构建,会按固定节奏向 NextPDF 许可服务报到——大致是每 7 天核验一次,以续约一段约 14 天的租约。只要部署能在该窗口内连接到该服务,一切都会照常运行。如果它在租约到期之后仍处于离线状态,高级版功能就会暂停,引擎回退到免费的 Core——它不会停止、报错或崩溃——而一旦恢复连通,这些功能会自动重新启用。 正是这份在线租约,使得授权的席位数得以执行,并让吊销能在租约窗口内 (约 14 天,另加一小段宽限期)生效。一次核验只发送许可标识符和一个加盐的指纹哈希——绝不发送你的文档内容,也绝不发送原始指纹或 IP 地址。
签名源码渠道可以完全离线运行。 由于其签名许可是一份自包含的产物、引擎在本地即可验证,签名源码渠道无需周期性连通,适合空气隔离(air-gapped) 的部署,仅受许可自身有效期的限制。在这里,席位数是由你的协议设定的合同性 上限,而非在运行时强制执行;吊销会在下一次在线核验时、或通过产品更新生效; 而一个纯离线的部署则什么都不发送。
两个各自独立的计时——别把它们混为一谈。 ionCube 渠道那约 14 天的租约 关乎连通性——即一个部署能容忍离线多久。它独立于任一渠道在订阅 结束日期之后所给予的那约 30 天宽限期;在该宽限期内,高级版功能会继续工作,让你先完成续订,之后引擎才会回退到 Core。租约失效与订阅到期是不同计时器上的不同事件。
无论你运行哪条渠道,其失效方式都是相同的,并且始终是安全的:NextPDF 降级为免费、开源的 Core。它绝不会变砖,绝不会把你锁在你已经部署的软件之外, 也绝不会在运行途中停止。
相同的权利,由你选择
标题为“相同的权利,由你选择”的章节这两条渠道并不是两款产品。它们授予完全相同的许可权利和相同的软件;区别在于 源码如何被保护、许可在运行时如何被检查,以及这要付出什么代价:
| ionCube 编码版 | 签名的明文源码 | |
|---|---|---|
| 你运行什么 | 经过编码的 PHP,通过 ionCube Loader 运行 | 可读、已签名的 PHP 源码 |
| 源码如何被保护 | 编码(一种技术手段)加上许可 | 许可与商业秘密法(无编码) |
| 最适合 | 多数部署;成本最低 | 受监管/审计/供应链安全需求 |
| 运行时成本 | 少量 Loader 开销(往往可忽略;对性能敏感请做基准测试) | 我们不额外增加 |
| 在线许可核验 | 周期性(约 7 天核验一次,约 14 天租约) | 可选;在本地验证并可离线运行 |
| 离线/空气隔离 | 至多维持一个租约窗口,之后高级版功能暂停回退到 Core(重新连接后自动恢复) | 完全支持;无需周期性连通 |
| 席位数 | 通过在线租约执行 | 合同性(依你的协议);不在运行时强制执行 |
| 吊销生效时间 | 在租约窗口内(约 14 天 + 一小段宽限期) | 在下一次在线核验时,或通过产品更新 |
| 发送的许可数据 | 仅许可 ID + 加盐指纹哈希(绝不含内容、IP 或原始指纹) | 完全离线时不发送任何内容 |
| 权利 | 完全相同——见 EULA | 完全相同——见 EULA |
定价反映的是这种保护与运行时之间的权衡,而非功能差距。关于当前价格与版本, 请参阅购买与许可以及从该页链接的定价页面;本文档页面有意不重述价格或许可条款。
我们为什么这样做
标题为“我们为什么这样做”的章节我们更希望 PHP 生态中能有更多严肃的、获得充分资金支持的、由专业团队维护的工具——而少一些因为没有可持续的方式来资助所需深度、而悄然耗尽心力的项目。 保护源码,正是让我们能够投入到那份深度之中,同时让内核保持开放、让编码版渠道保持可负担。而且因为信任需要赢得,我们努力在这一点上保持透明:每条渠道保护什么、它让你付出什么代价、以及为什么——好让这份权衡由你来掂量, 而不是由我们来掩盖。