Zend Guard使用指南及问题处理


Posted in PHP onJanuary 07, 2015

Zend Guard是目前市面上最成熟的PHP源码加密产品了。

刚好需要对自己的产品进行加密,折腾了一晚上,终于搞定,将碰到的问题及解决方法记录下来,方便日后需要,也可以帮助其他人。
我使用的是Wampserver,其中php的版本是5.3.10。

Zend Guard的安装及破解

点击下载Zend Guard5.5.0,下载完成后,请自行傻瓜化安装

这里需要注意以下几点

1、本KEY的有效时间为2010年7月10号,因此激活时请将自己电脑系统时间调整至这个时间以前

2、本KEY激活的为试用版,加密过的文件只有14天有效时间,因此在加密文件时,请将自己电脑系统时间向后调整N年,比如2099-12-31

3、下载授权文件[zend_guard授权文件.zip],解压得到zend_guard.zl,即为激活用的文件

4、打开Zend Guard 5.5.0,[Help]->[Register]->[Search for a license file on my disk],选择文件激活即可。

如何使用Zend Guard进行加密

1、打开Zend Guard 5.5.0,[File]->[New]->[Zend Guard Project],新建项目

2、在弹窗的窗口,前3项随便填吧,最后一项是加密后文件的保存位置,然后[Next];

3、本步骤是选择要加密的文件,可以为单个文件[Add File]和整个文件夹[Add Folder],然后[Next]

4、接下来是选择PHP版本[与你服务器上PHP的版本相对照],这里很重要,版本不对会出错,[Finish]完成项目的创建

5、在Zend Guard左侧的Guard Explorer中,可以看到你新建的项目了,鼠标选中后,右键[Encode Project],完成

Zend Guard Run-time support missing问题的解决

虽然现在可以成功加密php源码了,但是当执行脚本的时候,会发现不能正常执行,会显示如下信息

Zend Guard Run-time support missing!
One more more files on this web site were encoded by ZendGuard and the required run-time support is not installed orproperly configured.
......

原来,加密后的php代码需要ZendGuardLoader模块才能正常运行。
因为我的php版本是5.3.10的,所以我这里只提供了ZendGuardLoader-php-5.3-Windows,如果是其他版本的php,请自行百度。
点击下载ZendGuardLoader-php-5.3-Windows
下载好后解压压缩包,找到目录下的 ZendLoader.dll 文件,将它放到你的php目录下ext下,再编辑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"

重启wampserver

运气好的话,会发现可以成长执行了,运气不好的话,还是会发现以上错误。

这里我们已经安装了zend guard loader了,为什么还是无法执行zend加密后的php脚本呢?

通过查看输出phpinfo()信息,我发现有这么几行信息:

PHP Extension 20090626

Zend Extension 220090626

Zend Extension Build API220090626,TS,VC9

请注意,其中的TS是thread safety的简写(即线程安全)

一时也找不出原因,索性直接打开zend guard官网进行搜索,然后就解决了。

原来,zend guard loader只支持NTS的版本,意味着如果你的php版本是TS的话,就没法使用zend guard loader了,如果你想查看自己的php是ts还是nts的,只需要输出phpinfo,然后搜索下:Thread Safety,disabled对应nts版本,否则为ts。

因此,终极解决办法就是,下载个php NTS版本进行安装即可。

PHP 相关文章推荐
PHP+javascript模拟Matrix画面
Oct 09 PHP
第十四节--命名空间
Nov 16 PHP
php生成随机密码的几种方法
Jan 17 PHP
PHP容易忘记的知识点分享
Apr 30 PHP
php中如何使对象可以像数组一样进行foreach循环
Aug 09 PHP
保存到桌面、设为桌面且带图标的PHP代码
Nov 19 PHP
PHP 登录完成后如何跳转上一访问页面
Jan 14 PHP
PHP经典面试题集锦
Mar 19 PHP
php格式化json函数示例代码
May 12 PHP
PHP环境搭建(php+Apache+mysql)
Nov 14 PHP
PHP中的empty、isset、isnull的区别与使用实例
Mar 22 PHP
PHP Swoole异步Redis客户端实现方法示例
Oct 24 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
Jan 07 #PHP
php模拟用户自动在qq空间发表文章的方法
Jan 07 #PHP
PHP中使用CURL获取页面title例子
Jan 07 #PHP
PHP中调用SVN命令更新网站方法
Jan 07 #PHP
PHP PDO fetch 模式各种参数的输出结果一览
Jan 07 #PHP
PHP中使用php5-ffmpeg撷取视频图片实例
Jan 07 #PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
Jan 07 #PHP
You might like
图书管理程序(二)
2006/10/09 PHP
php中对xml读取的相关函数的介绍一
2008/06/05 PHP
PHP 全角转半角实现代码
2010/05/16 PHP
php FLEA中二叉树数组的遍历输出
2012/09/26 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
php常用的工具开发整理
2019/09/26 PHP
JavaScript高级程序设计(第3版)学习笔记2 js基础语法
2012/10/11 Javascript
AngularJs directive详解及示例代码
2016/09/01 Javascript
使用Angular.js开发的注意事项
2016/10/19 Javascript
微信小程序canvas拖拽、截图组件功能
2018/09/04 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
移动端手指操控左右滑动的菜单
2019/09/08 Javascript
Vue 中 filter 与 computed 的区别与用法解析
2019/11/21 Javascript
[53:52]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python中函数传参详解
2016/07/03 Python
Python表示矩阵的方法分析
2017/05/26 Python
python @property的用法及含义全面解析
2018/02/01 Python
Python解决线性代数问题之矩阵的初等变换方法
2018/12/12 Python
解决Jupyter因卸载重装导致的问题修复
2020/04/10 Python
html5 canvas fillRect坐标和大小的问题解决方法
2014/03/26 HTML / CSS
美国滑雪板和装备购物网站:Skis.com
2018/12/20 全球购物
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
Prototype是怎么扩展DOM的
2014/10/01 面试题
上班迟到检讨书
2014/01/10 职场文书
楼面经理岗位职责范本
2014/02/18 职场文书
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
道德演讲稿
2014/05/21 职场文书
同志主要表现材料
2014/08/21 职场文书
纪律教育学习月活动总结
2014/08/27 职场文书
村道德模范事迹材料
2014/08/28 职场文书
乡镇领导班子四风对照检查材料
2014/09/27 职场文书
2014年收银工作总结
2014/11/13 职场文书
2015年党支部公开承诺书
2015/01/22 职场文书
城南旧事电影观后感
2015/06/16 职场文书
css中z-index: 0和z-index: auto的区别
2021/08/23 HTML / CSS
Win11怎么把合并的任务栏分开 Win11任务栏合并分开教程
2022/04/06 数码科技