<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="解决Zend加密的PHP页面出现Incompatible file format的问题">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">admin</a><br />时间:2013-09-14 14:21<br />分类:<a href="index.php?action=list&amp;cid=3&amp;hash=">电脑技术</a><br />内容:
解决Zend加密的PHP页面出现Incompatible file format的问题

手头有一套php程序是zend加密的，将它放到主机空间上运行的时候遭遇如下问题：Fatal error: Incompatible file format: The encoded file has format major ID 3, whereas the Loader expects 4 in

百度总结之后，汇总该问题相关信息如下：


    从PHP5.3开始如果要支持zendguard加密的PHP代码，必须安装zend guard loader，老的zend optimizer将不被支持。

    PHP5.2之前的Zend加密程序用Zend Optimizer解析。

    PHP5.3开始的Zend加密程序用Zend Guard Loader解析。


综上，造成该问题的原因是Zend Guard 5.1更新了加密PHP文件的算法来迎合PHP5.3新版本支持，用Zend Guard老版本加密过的PHP文件在 PHP5.3 + Zend Guard Loader的环境下都无法正常浏览，会报出文章开头的错误。

解决方法：


    可以把PHP程序源文件在Zend Guard 5.1下重新加密，然后才能浏览。本处因为拿到的就是加密商业代码，故放弃这一招。

    也可以把程序放到PHP5.2 + Zend Optimizer的环境下运行即可。本处选择它来运行这套加密程序。


     把空间搬迁到了低版本PHP的环境下，搞定。摘录前后主机PHP环境如下：


    搬迁前：PHP5.3.17 + Zend Engine v2.3.0 + Zend Guard Loader v3.3

    搬迁后：PHP5.2.17 + Zend Engine v2.2.0 + Zend Optimizer v3.3.9

</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
