Zend Guard Run-time support missing,即,运行时找不到Zend Guard的支持。Zend Guard是一个对PHP源码进行加密保护的插件,运行时需要安装它的解析插件——Zend Guard Loader,如果当前环境没有安装该解析插件,就会出现这样的错误。
【确认问题】
如果你打开对应的PHP文件的话,会发现里面有正常的PHP标签——<?php ?>,标签里是一段很简单的标志,但标签之后的内容全都是“乱码”的。
例如,下图就是一个用Zend Guard加密混淆之后的PHP文件,如果要运行这样的文件,当前环境的PHP必须安装Zend Guard Loader拓展插件。
【安装Zend Guard Loader拓展】
首先,须知道加密的文件使用的PHP版本。
其次,须知道加密的文件使用的加密类型及版本,可参考文件头部“标识”。我们这里的加密类型当然就是Zend Guard。(还有其他加密类型,有兴趣的朋友可以自行搜索“PHP文件加密”)
Zend/PHP5.2 Zend/PHP5.3/5.4 Zend/PHP5.5/5.6 |
文件头部 <?php @Zend 或Zend PHP 5.3 2004072201 65540 PHP 5.4 2004072201 65541 PHP 5.5 2004072201 65542 PHP 5.6
|
接着,就是安装对应的Zend Guard Loader版本了。下载后,放在“php/ext/”目录中。
在PHP5.2及之前的版本,解析的插件不是Zend Guard Loader,而是Zend Optimizer,这里就不细说了。
在PHP5.3中,这个插件是自带的,直接配置开启即可。
在PHP5.4、PHP5.5,PHP5.6中,这个插件已移除,须到Zend的官网下载 http://www.zend.com/en/products/loader/downloads#Windows 具体根据当前运行的操作系统、PHP版本进行选择。(作者注:Zend官网好像找不到PHP5.4对应的Zend Guard Loader,个人感觉可以用PHP5.3中的。)
在PHP7及更高版本,Zend Guard已不再支持,官方说明 http://blog.zend.com/2016/10/10/zend-guard-and-php-7/#.WtlJc76FOUk 。
最后,在php.ini文件中加入配置,并重启服务。
[Zend.loader] zend_loader.enable=1 zend_loader.disable_licensing=1 zend_loader.obfuscation_level_support=3 zend_loader.license_path= zend_extension="你的PHP安装目录/ext/ZendLoader.dll"
【验证】
①如果在浏览器上打开对应的url,页面可正常访问,则说明解析成功。
②如果在浏览器上打开对应的url,还是出现文章开头所说的提示,则说明Zend Guard Loader拓展插件没有安装成功,须确认好ZendLoader.dll(Linux为.so)是否放在当前所运行的PHP环境的安装目录下,特别是有安装多版本的PHP的情况下,同样,确认php.ini文件的配置。
③如果在浏览器上打开对应的url,出现类似下图的情况,则说明当前的Zend Guard Loader版本与加密文件的PHP版本对不上,需要换一个版本。
————————————分割线————————————
题外话,在PHP5.5之前的PHP加密文件是可以破解的,详情请看另一篇文章——《PHP Zend解密》