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

时间:2021-01-11 20:13:24

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

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.

For the Web site user

This means that this Web server is not configured correctly to runthe files that it contains. Please contact the Web site'sadministrator/webmaster and inform them of this problem and give themthe URL you are trying to display to help them in diagnosing theproblem.

For The Site Administrator/Web Master

One or more files on your site were encoded with Zend Guard. Thismay be third party libraries that were provided to you by an ISV. Toallow these files to properly run you need to download and installone of the Zend guard run-time libraries. This is either ZendOptimizer or Zend Loader. The proper files can be downloaded fromhttp://www.zend.com/guard/downloads.This software is provided free of charge.

General Disclaimer: Zend Technologies is not responsible tothe configuration and setup of web sites using Zend Guard technology.Please contact your software vendor if these components were providedby an ISV or consult your Zend Guard Users Guide if these files wereencoded by your organization.

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版本进行安装即可。

参考资料

ZendGuard 5.5.0 破解方法+注册文件KEY下载

Windows下PHP(Thread Safe与Non Thread Safe)版本说明

PHP中VC6、VC9、TS、NTS版本的区别与用法详解

ISAPI执行方式是以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查
 
1. VC6与VC9的区别:

VC6版本是使用Visual Studio 6编译器编译的,如果你的PHP是用Apache来架设的,那你就选择VC6版本。

VC9版本是使用Visual Studio 2008编译器编译的,如果你的PHP是用IIS来架设的,那你就选择 VC9版本。

VC9版本是针对IIS服务器的版本,没有对APACHE的支持,而VC6版本对IIS和apache都提供了支持

2.Ts与nts的区别:

Windows版的PHP从版本5.2.1开始有Thread Safe和NoneThread Safe之分。

先从字面意思上理解,Thread Safe是线程安全,执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的CGI执行方式而耗尽系统资源。Non Thread Safe是非线程安全,在执行时不进行线程(Thread)安全检查。

3.PHP的两种执行方式:ISAPI和FastCGI。

ISAPI执行方式是以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这样来提高程序的执行效率,所以如果是以ISAPI来执行PHP,建议选择ThreadSafe版本;

而FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以FastCGI来执行PHP,建议选择NonThread Safe版本。

通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说应该是ts版,否则是nts版。

http://windows.php.net/downloads/releases/archives/

http://windows.php.net/downloads/releases/archives/

Thursday, January 22, 2015  4:24 AM     22349178 php-5.6.5-nts-Win32-VC11-x64.zip
   Thursday, January 22, 2015  4:20 AM     20967629 php-5.6.5-nts-Win32-VC11-x86.zip
   Thursday, January 22, 2015  4:20 AM     24203808 php-5.6.5-src.zip
   Thursday, January 22, 2015  4:20 AM     22499875 php-5.6.5-Win32-VC11-x64.zip
   Thursday, January 22, 2015  4:24 AM     21072883 php-5.6.5-Win32-VC11-x86.zip
  Thursday, February 19, 2015  2:45 AM     22355533 php-5.6.6-nts-Win32-VC11-x64.zip
  Thursday, February 19, 2015  2:45 AM     20970976 php-5.6.6-nts-Win32-VC11-x86.zip
  Thursday, February 19, 2015  2:45 AM     24355788 php-5.6.6-src.zip
  Thursday, February 19, 2015  2:45 AM     22501845 php-5.6.6-Win32-VC11-x64.zip
  Thursday, February 19, 2015  2:45 AM     21072108 php-5.6.6-Win32-VC11-x86.zip
       Friday, March 20, 2015 12:50 AM     22385183 php-5.6.7-nts-Win32-VC11-x64.zip
       Friday, March 20, 2015 12:50 AM     21003115 php-5.6.7-nts-Win32-VC11-x86.zip
       Friday, March 20, 2015 12:50 AM     24376286 php-5.6.7-src.zip
       Friday, March 20, 2015 12:50 AM     22536069 php-5.6.7-Win32-VC11-x64.zip
       Friday, March 20, 2015 12:50 AM     21103137 php-5.6.7-Win32-VC11-x86.zip
     Thursday, April 16, 2015  1:46 AM     22397288 php-5.6.8-nts-Win32-VC11-x64.zip
     Thursday, April 16, 2015  1:46 AM     21009390 php-5.6.8-nts-Win32-VC11-x86.zip
     Thursday, April 16, 2015  1:46 AM     24422529 php-5.6.8-src.zip
     Thursday, April 16, 2015  1:46 AM     22547895 php-5.6.8-Win32-VC11-x64.zip
     Thursday, April 16, 2015  1:46 AM     21113312 php-5.6.8-Win32-VC11-x86.zip