日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP 文件加密Zend Guard Loader 学习和使用(如何安装ioncube扩展对PHP代码加密)

發(fā)布時間:2023/11/29 php 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP 文件加密Zend Guard Loader 学习和使用(如何安装ioncube扩展对PHP代码加密) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、大體流程圖

二、PHP 項目文件加密

?下表列出了Zend產(chǎn)品中的PHP版本及其內(nèi)部API版本和Zend產(chǎn)品版本。

如何加密請往后看

三、如何使用

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

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

條件2:必須安裝ZendGuardLoader

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

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

(1)Windows 環(huán)境

(2)Linux 環(huán)境

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

第四步:獲取授權(quán)文件及部署

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

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

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

  4. 重啟web server ?

  5. 通過瀏覽器打開您的網(wǎng)店地址,這就表示您的 license 授權(quán)文件安 裝成功,可繼續(xù)進行安裝 ?

  6. 完成后記:如果您的研發(fā)人員需要在本地進行開發(fā),我們?yōu)槟峁┽槍ρ邪l(fā)人員本地開發(fā)的 license文件:“developer.zl”,開人人員無需進行申請,直接部署在自己的電腦上開發(fā)即可。

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

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

?

===========Windows 環(huán)境測試 ============================

安裝要求:

  1、php版本 < 5.6

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

  3、Zend Guard Loader 僅支持NTS

  4、修改php.ini文件

  5、重啟服務(wù)器

詳細步驟:

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,關(guān)于如何加密文件和項目:【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代碼的網(wǎng)站,而沒有安裝Zend Guard Loader,就會出現(xiàn)下圖錯誤(Zend Guard Run-time support missing!):

?安裝遇到的坑

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

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

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

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

許可認證為空?

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

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 授權(quán)文件的安裝

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"

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

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

?

刷新剛才訪問的網(wǎng)頁文件,就可以正常訪問了

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

1、加密的代碼不會優(yōu)化;

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

3、如果使用license授權(quán),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 呀。怎么可以使用昨天的來調(diào)試這個來,,,,無語..............?新建個工程: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 版本,這個前面已經(jīng)說過了的,如圖所示:

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

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

(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,打開頁面查看,已經(jīng)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:",

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

注: 每一臺服務(wù)器的機器碼都是獨立的,如果您 是需要將 ECstore 部署在多臺服務(wù)器上, 您需要生成多個機器碼 在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 命令行 運行加密文件可能出現(xiàn)的問題

加密主機號

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

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

配置?vim /etc/php5/fpm/php.ini 添加一下內(nèi)容:

[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 出現(xiàn)一下錯誤頁面信息

?

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

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

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

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

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

我們看看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不一樣了,老規(guī)矩,新建文件vim?/etc/php5/mods-available/zend-loader.ini 添加以下內(nèi)容

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 繼續(xù)測試,nginx沒有報錯

配置文件加載的信息

?

?

?

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

總結(jié)

以上是生活随笔為你收集整理的PHP 文件加密Zend Guard Loader 学习和使用(如何安装ioncube扩展对PHP代码加密)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。