让 Zend Guard Loader (php 5.3) 执行受 zendnc52.exe 保护的脚本的任何方法

Posted

技术标签:

【中文标题】让 Zend Guard Loader (php 5.3) 执行受 zendnc52.exe 保护的脚本的任何方法【英文标题】:Any way to get Zend Guard Loader (php 5.3) to execute scripts protected with zendenc52.exe 【发布时间】:2011-12-26 02:06:52 【问题描述】:

目前 php 5.3 托管环境必须安装和使用“Zend Guard Loader”扩展来处理和执行 Zend Guard 编码文件。我无法让它执行编码用于 Zend Optimizer (PHP 5.2) 的文件。

有什么解决方法吗?

【问题讨论】:

【参考方案1】:

我不这么认为......因此,我也坚持使用 php 5.2。

如果您想使用“Zend Guard Loader”运行zend 编码的 5.2 脚本,您将需要花更多的钱购买新版本来再次编码脚本......伤心。

【讨论】:

其实我不需要花更多的钱,因为 Zend Guard 包括两个编码器,即使我不得不 - 钱不是问题。问题是我必须为 php 5.2 和 5.3 维护两个版本的编码文件,而不是只有一个可以在 Zend Guard Loader 和 Zend Optimizer 下工作。 没有办法。因为这 2 个产品 100% 不兼容。 也许您可以使用 bccompiler 扩展来滚动您自己的编码? (见php.net/manual/en/book.bcompiler.php)( 不是一个可行的解决方案。我正在开发一个我不想安装的脚本,它要求用户在托管环境上安装这个扩展(虽然大多数 5.2 主机都启用了 Zend Optimizer,而许多 5.3 主机都启用了 Zend Guard Loader)。 那我猜你卡住了,因为 Zend 不想这样做。【参考方案2】:

对我有用的唯一方法是包含 php 5.2 文件而不是 Zend Guards 消息,如果条件检查 php 版本没有找到 zend 保护加载程序时会显示该消息。脏,但可以工作,但仍然需要存在 2 个文件,但无需加载程序在未受保护的代码中切换它们。

【讨论】:

【参考方案3】:

要回答 Zend Guard/Optimizer/Loader 上下文中的编码与运行时 - 它们应该完美匹配。接受的答案不正确 - 在 PHP 5.2 中加载的优化器中执行 PHP 5.3 编码文件没有任何调整。

如果您在有代码更新时编写/批处理编码过程,则维护 2 个目标版本非常容易。您只需使用zendenc52 执行一次源编码,然后使用zendenc53,为它们提供不同的目标目录。

更多相关信息。 PHP 5.3 代码与 5.2 不同,您的源代码实际上应该有 2 个不同的分支来匹配这些版本。 旧闻:http://php.net/manual/en/migration53.php

在测试/暂存 Zend Guard 编码的应用程序时,请确保您测试了编码版本(当然还需要根据需要调试开放源代码)。原因很简单 - 编码文件有一些处理混淆的数据表开销,并且可能会使用一些高级 PHP 语法改变 PHP 功能。如果在测试时在编码文件中发现任何问题 - 很容易找到并修复源。如果您只测试源版本,然后编码并部署给您的客户 - 结果是不可预测的。

至于部署,当您安装/untar/git/svn 部署您的 PHP 文件时,您可以将 PHP 目标版本粘贴到您的发布/下载/代码推送中,以便它们安装在正确的版本中,或者部署 2 个版本在不同的文档根位置,您可以符号链接/重写到与 PHP 目标版本 5.2 或 5.3 匹配的正确受保护应用程序版本。

最后但并非最不重要。 Zend Guard 支持的运行时是 Zend Server。它有一个社区版,任何人都可以通过 DEB / RPM 或安装文件的本机包管理器(Windows、Mac、其他不支持的 Linux本机包管理器)。 Zend Server 可选的 Loader 组件将处理编码的应用程序文件,它带有 PHP 5.2 和 5.3 分支,因此无需在 PHP 上手动安装 Zend Optimizer 或 Loader。正确迁移应用程序(编码和开源)后,从 PHP 5.2 升级到 5.3 很容易,而且是原生的。

希望这会有所帮助。

【讨论】:

您的建议不适合我的脚本分发方案,我无法控制安装脚本的服务器环境。还有一个调整,但需要一些 Zendenc 二进制文件修改,允许为两个 zg 加载器版本提供一个文件,但非常不稳定。附:似乎唯一的方法是希望服务器很快就会开始用 5.3 替换 5.2(最近的稳定版本是 5.4)

以上是关于让 Zend Guard Loader (php 5.3) 执行受 zendnc52.exe 保护的脚本的任何方法的主要内容,如果未能解决你的问题,请参考以下文章

如何在 docker php 官方镜像实例中添加 Zend Guard Loader 支持?

PHP5.3PHP5.4下安装ZendOptimizer或Zend Guard Loader的方法

如何在 Xampp 上安装 Zend Guard Loader

windows开启Zend Guard Loader证书配置

如何使用 Wampserver 2.2e(使用 PHP 5.3.x)运行 Zend Guard Loader

如何检查是不是安装了 Zend Optimizer 或 Zend Guard Loader