1. 程式人生 > >PHP:使用Zend對源碼加密、Zend Guard安裝以及Zend Guard Run-time support missing的解決方法

PHP:使用Zend對源碼加密、Zend Guard安裝以及Zend Guard Run-time support missing的解決方法

加密 lock select 方便 ... 壓縮 art 目前 電腦系統

  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:使用Zend對源碼加密、Zend Guard安裝以及Zend Guard Run-time support missing的解決方法