Fatal error: Incompatible file format: The encoded file has format major ID 1, whereas the Loader expects 4 in 的错误提示
今天遇到一个客户的PHP源码的网站出现 : Fatal error: Incompatible file format: The encoded file has format major ID 1, whereas the Loader expects 4 in 的错误提示 。
当前服务器的环境是: PHP5.3 + Zend Guard Loader
提示此错误的原因: ZendOptimizer在php5.2的时候生命周期就结束了,而在全新的php5.3系列版本中都将用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的环境下运行即可。
所以经常选择的解决办法是:更换成 PHP5.2 + ZendOptimizer
需要注意的是:
- 从PHP5.3开始如果要支持zendguard加密的PHP代码,必须安装zend guard loader,老的zend optimizer将不被支持。
- PHP5.2之前的Zend加密程序用Zend Optimizer解析。
- PHP5.3开始的Zend加密程序用Zend Guard Loader解析。