编码文件的格式主要 ID 为 65540,而优化器预计为 2
Posted
技术标签:
【中文标题】编码文件的格式主要 ID 为 65540,而优化器预计为 2【英文标题】:The encoded file has format major ID 65540, whereas the Optimizer expects 2 【发布时间】:2021-04-19 10:20:21 【问题描述】:当我尝试在我的 Xampp 服务器 1.7.1 上运行 CMS (MyPortal 2) 时收到此错误消息:
Incompatible file format: The encoded file has format major ID 65540, whereas the Optimizer expects 2 in C:\xampp\htdocs\mp2.32-5.3\index.php on line 0
我假设源项目是用 Zend Guard 编码的。用 Notepad++ 打开文件显示第一行:
Zend 2004072203 65540 24625 95846
我知道我使用的是正确的 php,因为它在网站上说,要求是 php 5.2.1 或更新版本。 Xampp 1.7.1 附带了 php 5.2.9 和 zend 优化器 3.3.3,正如您在 this screenshot 上看到的那样,我从 phpinfo 获取。
我还确保 zend_loader 在 php.ini 文件中设置为 1。 phpinfo on server screnshot 和 php.ini file screnshot
我也尝试过不同的 Xampp 版本:1.7.1; 1.7; 1.6.8; 1.6.6 -> 所有这些都有 Zend 优化器 3.3.3 或 3.3.0 但不同的 php 版本。错误是一样的。 我也尝试过使用 Zend 优化器版本 2.2.x 的 Xampp 版本 1.5.0。我只得到了完全相同的结果,而不是 Optimizer 在 C:\xampp 中期望 2....在第 0 行,它是一个不同于 0 的数字。
我也尝试切换到 Wamp。我得到了完全相同的错误。
但是,我没有尝试安装 Zend Guard Loader,因为 Xampp 和 Wamp 都使用 php 并启用了线程安全,而 Zend Guard Loader 需要 php 是 nts。
我在 Windows 10 上运行 Xampp。
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:我解决了,如果有人感兴趣的话。
简而言之,我尝试在 Xampp 上安装的 CMS 是使用 php 5.3 NTS 使用 Zend Guard 5.5 编码的。
关于xampp、zend和php的极客信息:
Zend Optimizer 是 Zend Guard Loader 的前身。 Zend Optimizer 的最后一个版本支持 php 5.2。 Php 5.3 及更高版本不再支持 zend 优化器,您应该安装 Zend Guard Loader。 Xampp v 1.7.1 是支持 Zend Optimizer (v3.3.3) 的最后一个版本,因为它具有 php 5.2.9。另一方面,Xampp v 1.7.2 使用的是 php 5.3.0,你猜对了,它没有附带 zend opzimiter。
另外,有趣的事实:xampp 附带的 php 是线程安全的,而如果要安装 zend 保护加载程序,则必须安装 php 非线程安全 (nts)。
我是怎么做到的:
首先我尝试使用 Xampp v. 1.7.1,因为它具有 Zend 优化器 3.3.3,并预装了 php 5.2。我试图运行它,但它产生了上面标题中写的错误。所以从上面的错误中,你无法真正知道,你需要什么样的 zend loader。经过密集的谷歌搜索后,我意识到我需要 Zend Guard Loader 来测试不同版本的 cms。所以,我决定尝试安装php nts。关于如何在 xampp 上安装不同的 php 版本有一步一步的tutorial。 我从this PHP archive 下载了 php 5.5 nts 并按照我之前提到的教程进行操作。我还备份了已经安装的 php 文件夹,以防万一……你知道的。复制 xampp 文件夹中的新 php 文件夹并将名称更改为“php”,以便 xampp 正确解释它。我在 apache 文件夹中还做了一些其他的事情(我添加了FastCGI mod_fcgid 模块并配置了 httpd-xampp.conf 文件),如教程中所述。然后,在设置好 php 并使用 phpinfo 对其进行测试后,我从here: zend guard loader 下载了用于 php 5.5 的 zend guard loader 7.0.0。 我启动了 xampp,它显示了相同的错误,但有点不同:
Incompatible file format: The encoded file has format major ID 4, whereas the Loader expects 6
这是一个进步,因为它告诉我它需要 Zend 编码器 ID 为 4 的 Zend Guard Loader。它显示为 6,因为我已经为 php 5.5 安装了 Zend Guard Loader 7.0.0,它的 Zend 编码器 ID 为 6。有table 显示 php 支持哪个 zend 保护加载器和编码器 ID(请注意,在表中 Zend 编码器 ID 4 需要 Zend Guard 版本 5.5 而不是版本 6)。从这里开始很简单。 CMS 想要 zend 保护加载器 5.5,它支持 zend 编码器 ID 4 并使用 php 5.3。我下载了 php 5.3,下载了 Zend Guard loader 5.5 并且成功了!
我使用的其他有用链接:
教程:如何在 Xampp 上安装 Zend Guard Loader:How to install Zend Guard Loader on Xampp Xampp 存档页面:https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/【讨论】:
以上是关于编码文件的格式主要 ID 为 65540,而优化器预计为 2的主要内容,如果未能解决你的问题,请参考以下文章