PHP 文件加密Zend Guard Loader 學習和使用(如何安裝ioncube擴展對PHP代碼加密)

一、大體流程圖

二、PHP 項目文件加密

?下表列出了Zend產品中的PHP版本及其內部API版本和Zend產品版本。

如何加密請往后看

三、如何使用

第一步:確認當前環境 Amai Phalcon 前,請確認您具備以下兩個條件,如果您的環境不滿足此條件,建議您對系統環境進行重新配置。

條件1:PHP版本在5.5.X以上(必須為NTS)

條件2:必須安裝ZendGuardLoader

第二步:生成機器碼,機器碼是授權文件的重要組成部分,每一臺服務器都有一個獨立的機器碼,您只需運行由 我們所提供的機器碼生成工具來獲取您的機器碼即可。

注: 每一臺服務器的機器碼都是獨立的,如果您 是需要將 ECstore 部署在多臺服務器上, 您需要生成多個機器碼 在windows/linux終端運行hardware.sh,獲取機器碼如圖:

(1)Windows 環境

(2)Linux 環境

第三步:申請授權文件,在郵件中,寫入您的機器碼與您的公司名稱,以郵件形式發送至overcome.wan@gmial.com 進行申請授權文件。郵件標題以“申請ego license授權文件”注明

第四步:獲取授權文件及部署

  1. 如果您提供的信息有效,您將會以郵件形式獲取到您的license授權文件:“license.zl” 把該文件放入在ecstore安裝目錄下 ?

  2. 編輯php.ini文件,搜索‘zend_loader.license_path’ ?

  3. 加上zend_loader.license_path=‘Phalcon Web 安裝目錄/license.zl’ ?

  4. 重啟web server ?

  5. 通過瀏覽器打開您的網店地址,這就表示您的 license 授權文件安 裝成功,可繼續進行安裝 ?

  6. 完成后記:如果您的研發人員需要在本地進行開發,我們為您提供針對研發人員本地開發的 license文件:“developer.zl”,開人人員無需進行申請,直接部署在自己的電腦上開發即可。

  本地開發license文件位置:Phalcon 目錄下developer.zl

?第五步:很遺憾,PHP 的Phalcon框架暫時不支持加密,一下為官方郵件(該郵件為20170512官方回復)

?

===========Windows 環境測試 ============================

安裝要求:

  1、php版本 < 5.6

  2、把加密的php文件上傳到服務器上看看效果,提示php文件采用了Zend Guard加密,需要安裝Zend Loader/ZendOptimizer

  3、Zend Guard Loader 僅支持NTS

  4、修改php.ini文件

  5、重啟服務器

詳細步驟:

1、下載Zend Guard Loader (Runtime for PHP 5.5 or 5.6),在這里我選擇Windows版本:http://www.zend.com/en/products/loader/downloads#Windows

2、phpStudy 安裝,將下載好后解壓壓縮包zend-loader-php5.6-windows-x86_update1.zip?,找到目錄下的 ZendLoader.dll 文件,將它放到你的php目錄下ext下,再編輯php.ini文件,添加一段代碼(如):

在這里編輯:E:\phpStudy\php\php-5.6.27-nts\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="E:\phpStudy\php\php-5.6.27-nts\ext\ZendLoader.dll"

選擇一個php5.6 的非安全線程去啟動

運行phpinfo(),會看到如下信息:

3、下載ZendGuard-7.0.0-win32.win32.x86.msi,http://www.zend.com/en/products/guard/direct,關于如何加密文件和項目:【PHP】用Zend加密PHP源碼/保護你的源代碼圖文教程

4、測試代碼,就以ThinkPhp5.0 的官方代碼為案例進行測試

  加密前的代碼文件:thinkphp_5_full

  加密后的代碼文件:thinkphp_5_full_encode

使用Visual Studio Code 分別打開加密前和加密后的代碼項目:thinkphp_5_full

通過瀏覽器訪問頁面效果:

thinkphp_5_full_encode

可以看出已被加密成二進制文件了,不能打開,通過瀏覽器訪問則是正常的

注意:把加密后的代碼放在項目目錄中,如使用了ZendGuard加密的PHP代碼的網站,而沒有安裝Zend Guard Loader,就會出現下圖錯誤(Zend Guard Run-time support missing!):

?安裝遇到的坑

分析原因:由于我安裝的php 版本為TS ,意思就是安全線程,Windows版的PHP從版本5.2.1開始有Thread Safe和NoneThread Safe之分。

【1】Thread Safe是線程安全,執行時會進行線程(Thread)安全檢查,以防止有新要求就啟動新線程的CGI執行方式而耗盡系統資源。

【2】Non Thread Safe是非線程安全,在執行時不進行線程(Thread)安全檢查。

Thread Safety : enable 是不能安裝 ZendLoader.dll 的(Installing Zend Guard Loader for any PHP-NTS distribution)不安線程成才可以的

許可認證為空?

修改配置參數:(禁用修改為不禁用),重啟服務器即可

zend_loader.disable_licensing=1 修改為:zend_loader.disable_licensing=0

完整配置:

[Zend.loader]
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
zend_loader.license_path="E:\phpStudy\php\php-5.6.27-nts\WWW/tp52.zl"
zend_extension="E:\phpStudy\php\php-5.6.27-nts\ext\ZendLoader.dll"

參考文獻:

1、如何對PHP文件進行加密——ZendGuard加密與ZendLoader解密?

2、ecstore 授權文件的安裝

3、官方文檔:http://www.zend.com/en/products/zend-guard?

4、官方安裝 Zend Guard Loader

5、注冊Zend Guard?

6、Zend Guard功能

7、圖解PHP使用Zend Guard 6.0加密方法教程

======================啟用許可認證license======================

需要先生成一個 license.zl,然后把該文件配置到php.ini 文件中

?選擇正確的PHP 版本,很重要的哦

?

?選擇安全,配置license,注意:第四步的 名稱和編碼的要一樣哦(ThinkPHP-Encode-License)

?

最后生成的加密文件(二進制文件)

復制該文件到項目目錄下去

瀏覽器訪問:

說明:以上提示表示沒有配置 license路徑,于是提示php警告,這時候我們查看配置文件php.ini

[Zend.loader]
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
zend_loader.license_path="E:\phpStudy\WWW/Product_TP5.zl"
zend_extension="E:\phpStudy\php\php-5.6.27-nts\ext\ZendLoader.dll"

也就是以上紅色部分文件加載的文件不是方才生成的文件,修改為以下配置(剛才生成的文件),重啟服務器

zend_loader.license_path="E:\phpStudy\WWW/ThinkPHP-Encode-License.zl"

?

刷新剛才訪問的網頁文件,就可以正常訪問了

在這里用的是試用版,有一下問題

1、加密的代碼不會優化;

2、加密的文件14天后過期;

3、如果使用license授權,license 3天后過期。

?

============== Linux 安裝測試====================

1、如何安裝PHP,查看我的另外一篇博客:http://www.cnblogs.com/tinywan/p/6647587.html?/

2、一定要是NTS

3、下面使用連個項目對比測試加密效果

【1】項目名稱:thinkphp_5_full ?Nginx配置端口號:8080

nginx.conf配置文件:

    # thinkphp_5_full
    server {listen       8080;server_name  127.0.0.1;set $root_path /home/www/thinkphp_5_full/public;root $root_path;index  index.php index.html;location / {if (!-e $request_filename) {rewrite  ^(.*)$  /index.php?s=/$1  last;break;}}location ~ \.php$ {try_files $uri =404;fastcgi_pass   unix:/var/run/php5-fpm.sock;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;include        fastcgi_params;}}

通過瀏覽器訪問8080端口,訪問正常

?

?

【2】項目名稱:ThinkPHP-Encode-License 端口號:8088 ?配置文件:nginx.conf

    # ThinkPHP-Encode-License
    server {listen       8088;server_name  127.0.0.1;set $root_path /home/www/ThinkPHP-Encode-License/public;root $root_path;index  index.php index.html;location / {if (!-e $request_filename) {rewrite  ^(.*)$  /index.php?s=/$1  last;break;}}location ~ \.php$ {try_files $uri =404;fastcgi_pass   unix:/var/run/php5-fpm.sock;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;include        fastcgi_params;}}

瀏覽器訪問8088端口,訪問已被加密不可以訪問

?

編輯配置文件:vim /etc/php5/fpm/php.ini

[Zend.loader]
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
zend_loader.license_path="/home/www/ThinkPHP-Encode-License.zl"
zend_extension="/home/www/zend-loader-php5.5-linux-x86_64/ZendGuardLoader.so"

phpinfo() 查看是否安裝成功

安裝成功后還是不能夠訪問:

Nginx 錯誤日式

2017/05/23 10:34:59 [error] 5503#0: *9 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Incompatible file format:  The encoded file has format major ID 7,
whereas the Loader expects 6 in /home/www/ThinkPHP-Encode-License/public/index.php on line 0" while reading response header from upstream,

為什么這樣子來!PHP加密時候的版本問題嗎啊?昨天是5.6 呀,今天在Linux 的是5.5 呀。怎么可以使用昨天的來調試這個來,,,,無語..............?新建個工程:ThinkPHP-Encode-License-5.5

這時候先切換到windows ,同時改變php 版本為5.5,我們寫個test.php 文件進行測試

訪問項目還是一個吊樣啊!不行啊!大哥

你是加載錯誤的許可認證嗎?一看配置文件,空的呀!原始切換文件就是什么都沒有了

擴展都沒安裝,怎么可鞥?

?去官方在下載個5.5 版本的倒騰下?

[Zend.loader]
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
zend_loader.license_path="E:\phpStudy\WWW/ThinkPHP-Encode-License-5.5.zl"
zend_extension="E:\phpStudy\php\php-5.5.38\ext\ZendLoader.dll"

google 一番 看到這個表?https://support.zend.com/hc/en-us/articles/217058968

日志報錯:

astCGI sent in stderr: "PHP message: PHP Fatal error:  Incompatible file format:  The encoded file has format major ID 7, whereas the Loader expects

?看來是這個加密工具版本的為題了:Zend Guard 7 (64-bit) ,仔細琢磨,原來我一直加密使用的PHP版本是php5.6 版本,這個前面已經說過了的,如圖所示:

在這里我們在重新加密一次。記得這次一定要選php5.5 版本(linux 安裝的php 版本為5.5.9)

最后生成的文件上傳到Nginx服務器目錄,修改配置文件

(1)vim /usr/local/nginx/conf/nginx.conf

set $root_path /home/www/ThinkPHP-Encode-License-5.5/public;
root $root_path;

(2)vim /etc/php5/fpm/php.ini

[Zend.loader]
zend_extension="/home/www/ZendGuardLoader.so"
zend_extension="/home/www/opcache.so"
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
zend_loader.license_path="/home/www/ThinkPHP-Encode-License-5.5.zl"

重啟php5-fpm 和Nginx,打開頁面查看,已經OK

?

?在這里為了測試,給一個錯誤的許可認證文件?ThinkPHP-Encode-License-5.5-error.zl

zend_loader.license_path="/home/www/ThinkPHP-Encode-License-5.5-error.zl"

可以看出Nginx直接報錯

?

錯誤日志:

[error] 7091#0: *1 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 58.101.3.167, server: 127.0.0.1, 
request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:",

重新配置回原來正確的許可認證,則可以正常訪問啦

注: 每一臺服務器的機器碼都是獨立的,如果您 是需要將 ECstore 部署在多臺服務器上, 您需要生成多個機器碼 在windows/linux終端運行hardware.sh,獲取機器碼如圖:

腳本文件:hardware.sh

#!/usr/bin/env php
<?phpfunction command_hardware(){if(function_exists('zend_loader_enabled') && zend_loader_enabled()){foreach (zend_get_id() as $hardware) {echo $hardware, "\n";}} else {echo 'zend guard loader not installed or not enabled!';exit;}}
command_hardware();

Linux 下面 ,在這里為cli 模式,所以別忘記給cli 模式的配置文件也安裝ZendLoader 擴展庫,否則報錯:zend guard loader not installed or not enabled!

windows 下面

PHP CLI 命令行 運行加密文件可能出現的問題

加密主機號

***************針對Linux 環境 Phalcon框架擴展和Zend Guard Loader 擴展沖突的問題*******

以上測試PHP配置文件是沒有安裝Phalcon擴展,一點安裝Phalcon擴展,啟動Nginx則會直接報錯

配置?vim /etc/php5/fpm/php.ini 添加一下內容:

[Zend.loader]
zend_extension="/usr/lib/php5/ZendGuardLoader.so"
zend_extension="/usr/lib/php5/20121212/opcache.so"
zend_loader.enable=1
zend_loader.disable_licensing=1
zend_loader.obfuscation_level_support=3

重啟 php-fmp 出現一下錯誤頁面信息

?

Nginx錯誤日志:"GET /info.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:"

注釋掉上面/etc/php5/fpm/php.ini?的內容,重啟php-fmp 繼續測試,可以正常顯示

?總結:如果安裝Phalcon 擴展則在?/etc/php5/fpm/php.ini 添加?zend_extension 擴展則會出現問題

?以上都是自己踩的坑啊!

-----------------------正式開始》》》》》》》》》》》》》》》》

我們看看Phalcon擴展文件添加在那里了,原來在這個文件夾下面

root@iZ238xopqw6Z:/home/www# find / -name phalcon.so
/usr/lib/php5/20121212/phalcon.so

我們復制?ZendGuardLoader.so 到/usr/lib/php5/20121212 文件夾下面

root@iZ238xopqw6Z:/home/www# cp /usr/lib/php5/ZendGuardLoader.so /usr/lib/php5/20121212/ZendGuardLoader.so
root@iZ238xopqw6Z:/home/www# cd /usr/lib/php5/20121212/
root@iZ238xopqw6Z:/usr/lib/php5/20121212# ls
curl.so  gd.so  json.so  ldap.so  mysqli.so  mysql.so  opcache.so  pdo_mysql.so  pdo.so  phalcon.so  readline.so  redis.so  ZendGuardLoader.so

當然了這是php5.5.9 和php7不一樣了,老規矩,新建文件vim?/etc/php5/mods-available/zend-loader.ini 添加以下內容

cd?/etc/php5/mods-available?

vim zend-loader.ini

[zend.loader]
zend_extension=ZendGuardLoader.so
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=2
zend_loader.license_path="/home/www/thinkphp_5-encode-5.5.zl"

切換到目錄/etc/php5/fpm/conf.d 做一個軟連接文件(sudo ln -s 源文件 目標文件)

ln -s ../../mods-available/zend-loader.ini 02-zend-loader.ini

重啟php-fmp 繼續測試,nginx沒有報錯

配置文件加載的信息

?

?

?

如何安裝ioncube擴展對PHP代碼加密

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395692.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395692.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395692.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前向聲明

前向聲明的定義&#xff1a;有些時候我們可以聲明一些類但是并不去定義它&#xff0c;當然這個類的作用也很有限了。 如&#xff1a;class A; 聲明一個foo類&#xff0c;這個聲明&#xff0c;有時候也叫做前向聲明(forward declaration)&#xff0c;在聲明完這個foo類之后&…

php尋找文本,PHP文本數據庫的搜索方法_php

//php文本數據庫的搜索方法searchstr("/".preg_quote($searchstr)."/");//$searchstr是查找的關鍵字$recordsfile($file);//獲取所有的記錄數http://www.gaodaima.com/45906.htmlPHP文本數據庫的搜索方法_php//$file是查找的數據文件$search_reocrdspreg_g…

react vs 2017_我在React Europe 2017上學到了什么

react vs 2017by Nicolas Cuillery由Nicolas Cuillery 我在React Europe 2017上學到了什么 (What I learned at React Europe 2017) Few days ago, the 3rd edition of the biggest React conference in Europe took place in Paris. No heatwave or transportation strike th…

rem 之js代碼獲取font-size值(適合移動手機端)

這兩天學的是自適應&#xff0c;代碼有點亂。而且這幾天忙著寫實習報告&#xff0c;也沒有時間去整理。 但是&#xff0c;這下面代碼吧&#xff0c;是可以獲取html的font-size值的&#xff0c;然后用來設置相對單位rem的從而達到自適應效果的&#xff1b;看到紅色的width了吧&a…

關于C#中委托的一點理解

C#中委托是一種類型。可以這么籠統的理解&#xff1a;int型變量代表一個整型&#xff0c;而委托類型的變量代表一個方法的地址&#xff08;將方法名稱傳入constructor并實例化該委托變量&#xff09;。 --By Brisk Yu 1 為何要使用委托 我覺得網上關于什么現實生活的舉例并不好…

阿里的事前驗尸_(不太完全)100天的代碼-驗尸

阿里的事前驗尸by JS由JS (不太完全)100天的代碼-驗尸 ((Not quite) 100 Days of Code — A Postmortem) At the end of last year, I wrote about my experience coding and making daily commits to GitHub for 30 consecutive days. I also pledged to keep the streak goi…

php超市管理系統論文,超市管理系統的設計與實現

當今社會為信息社會&#xff0c;世界已經進入在計算機信息管理領域中激烈競爭的時代。對于一般的商戶而言&#xff0c;雜亂無章地陳放著的商品無疑會耗費他們大量的時間去對其整理并一一分類。他們需要更加便捷的手段去管理他們的商品以節約他們的時間成本以及人工成本。并且就…

只能輸入正整數 以及常用的正則表達式

<input typetext idSYS_PAGE_JumpPage nameSYS_PAGE_JumpPage size3 maxlength5 οnkeyupthis.valuethis.value.replace(/[^1-9]/D*$/,"") οndragenter"return false" οnpaste"return !clipboardData.getData(text).match(//D/)"" sty…

jq 自動滑動輪換(向后插入小塊)

// JavaScript Documentvar Marquee { arrIdObj : {/*marqueebox : {distance:-95,//移動距離delay:3000,//延遲時間speed:1000//移動時間},minCount:2 */}, //創建對象 startMarquee:function(){ //給參數賦值 if(this.arrIdObj ! null && typeof this.arrIdObj &qu…

bzoj 2178 圓的面積并 —— 辛普森積分

題目&#xff1a;https://www.lydsy.com/JudgeOnline/problem.php?id2178 先看到這篇博客&#xff1a;https://www.cnblogs.com/heisenberg-/p/6740654.html 好像本應算弓形面積、三角形面積之類的&#xff0c;但不會...于是用辛普森積分硬做... 參考了這篇博客&#xff1a;ht…

php獲取訪問者ip地址匯總,php獲取訪問者IP地址匯總_PHP

//方法1&#xff1a;$ip $_SERVER["REMOTE_ADDR"];echo $ip;//方法2&#xff1a;代碼如下:$user_IP ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];$user_IP ($user_IP) ? $user_IP : $…

Charles抓包工具的使用

2019獨角獸企業重金招聘Python工程師標準>>> 感謝唐巧分享的文章&#xff0c;受益匪淺 文章目錄 1. 目錄及更新說明2. Charles 限時優惠3. 簡介4. 安裝 Charles5. 將 Charles 設置成系統代理6. Charles 主界面介紹7. 過濾網絡請求8. 截取 iPhone 上的網絡封包 8.1. …

python每秒20個請求_使用Python每秒百萬個請求

python每秒20個請求by Pawe? Piotr Przeradowski通過Pawe?Piotr Przeradowski 使用Python每秒百萬個請求 (A million requests per second with Python) Is it possible to hit a million requests per second with Python? Probably not until recently.使用Python每秒可以…

iOS開發——處理1000張圖片的內存優化

一、項目需求 在實際項目中&#xff0c;用戶在上傳圖片時&#xff0c;有時會一次性上傳大量的圖片。在上傳圖片前&#xff0c;我們要進行一系列操作&#xff0c;比如&#xff1a;旋轉圖片為正確方向&#xff0c;壓縮圖片等&#xff0c;這些操作需要將圖片加載到內存中&#xff…

jquery ui php,php – 打開帶有動態內容的jQuery UI對話框

我有一個關于jQuery UI對話框的問題,并顯示數據庫中的動態內容.所以我得到了一個web應用程序,我還需要創建一個管理模塊來管理所有用戶和其他信息.我創建了一個頁面,顯示列表中的所有用戶,在每一行中我也創建了一個編輯按鈕.我想這樣做,當你按下用戶的編輯按鈕時,會打開一個對話…

linux shell的單行多行注釋

1.單行注釋&#xff0c;使用符號# echo "123456"echo "test"#echo "comment“ 2. 多行注釋 &#xff08;1&#xff09;使用 :<<! &#xff01; filenametest.txt :<<! fileContentcat $filenamei0 for line in $fileContent dofileList[…

MapReduce Input Split 輸入分/切片

MapReduce Input Split&#xff08;輸入分/切片&#xff09;詳解 public static long getMaxSplitSize(JobContext context) { return context.getConfiguration().getLong(SPLIT_MAXSIZE, Long.MAX_VALUE); } 如果沒有設置這maxsize默認是Long.MAX_VALUE public static long …

win7無損擴大c盤空間_無損網絡導航的空間模型

win7無損擴大c盤空間by Patryk Ada?通過PatrykAda? 無損網絡導航的空間模型 (A Spacial Model for Lossless Web Navigation) In my last post I described the concept of navigation trails as an evolution of the standard tabbed browsing model.在我的上一篇文章中&am…

php訪問者信息,如何通過PHP檢索訪問者的ISP?

我試圖糾正拉姆庫馬爾的答案,但每當我編輯他們的帖子,我將被暫時禁止,我的修改被忽略。(至于為什么,我不知道,這是我第一次也是唯一一次在這個網站上編輯。)由于網站更改和管理員執行基本的bot檢查(檢查標題),他的代碼不再工作:$IP $_SERVER[REMOTE_ADDR];$User_Agent Mozill…

從《在小吃店遇見凱恩斯》初識經濟

最近在看《在小吃店遇見凱恩斯》這本書&#xff0c;算是對經濟和經濟學的初步認識。 那些概念 1. 經濟與經濟學 經濟&#xff1a;經世濟民&#xff0c;經營國家、救贖百姓&#xff0c;發展國家經濟進步、促成人人致富。 經濟學&#xff1a;研究發展國家經濟進步、促成人人致富的…