首页 » PHP » 正文

PHP-Zend Guard Run-time support missing!报错

Zend Guard Run-time support missing,即,运行时找不到Zend Guard的支持。Zend Guard是一个对PHP源码进行加密保护的插件,运行时需要安装它的解析插件——Zend Guard Loader,如果当前环境没有安装该解析插件,就会出现这样的错误。

zeng guard1.png【确认问题】

如果你打开对应的PHP文件的话,会发现里面有正常的PHP标签——<?php ?>,标签里是一段很简单的标志,但标签之后的内容全都是“乱码”的。

例如,下图就是一个用Zend Guard加密混淆之后的PHP文件,如果要运行这样的文件,当前环境的PHP必须安装Zend Guard Loader拓展插件。

zend guard3.png

【安装Zend Guard Loader拓展】

首先,须知道加密的文件使用的PHP版本。

其次,须知道加密的文件使用的加密类型及版本,可参考文件头部“标识”。我们这里的加密类型当然就是Zend Guard。(还有其他加密类型,有兴趣的朋友可以自行搜索“PHP文件加密”)

Zend/PHP5.2
Zend/PHP5.3/5.4
Zend/PHP5.5/5.6
文件头部 <?php @ZendZend
PHP 5.3 2004072201 65540
PHP 5.4 2004072201 65541
PHP 5.5 2004072201 65542
PHP 5.6 2004072201 65543


接着,就是安装对应的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版本对不上,需要换一个版本。

zend guard2.png

————————————分割线————————————

题外话,在PHP5.5之前的PHP加密文件是可以破解的,详情请看另一篇文章——《PHP Zend解密

发表评论