php_screw怎么用-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“php_screw怎么用”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“php_screw怎么用”這篇文章吧。

成都創(chuàng)新互聯(lián)公司不只是一家網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司;我們對(duì)營(yíng)銷(xiāo)、技術(shù)、服務(wù)都有自己獨(dú)特見(jiàn)解,公司采取“創(chuàng)意+綜合+營(yíng)銷(xiāo)”一體化的方式為您提供更專業(yè)的服務(wù)!我們經(jīng)歷的每一步也許不一定是最完美的,但每一步都有值得深思的意義。我們珍視每一份信任,關(guān)注我們的成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站質(zhì)量和服務(wù)品質(zhì),在得到用戶滿意的同時(shí),也能得到同行業(yè)的專業(yè)認(rèn)可,能夠?yàn)樾袠I(yè)創(chuàng)新發(fā)展助力。未來(lái)將繼續(xù)專注于技術(shù)創(chuàng)新,服務(wù)升級(jí),滿足企業(yè)一站式成都全網(wǎng)營(yíng)銷(xiāo)推廣需求,讓再小的品牌網(wǎng)站建設(shè)也能產(chǎn)生價(jià)值!

php文件通常以文本格式存貯在服務(wù)器端, 很容易被別人讀到源代碼, 為了對(duì)源代碼進(jìn)行保護(hù), 可以采用對(duì)源代碼進(jìn)行加密的方式.要實(shí)現(xiàn)該功能需要兩部分:

一是加密程序,實(shí)現(xiàn)對(duì)PHP文件的加密. 另一個(gè)就是對(duì)加密過(guò)的PHP文件進(jìn)行解析, 以得到運(yùn)行結(jié)果. 前者的實(shí)現(xiàn)比較簡(jiǎn)單, 就是一程序而已. 后者的實(shí)現(xiàn)大部分都是通過(guò)php module的形式來(lái)實(shí)現(xiàn)的.

php_screw(螺絲釘)可以實(shí)現(xiàn)以上的功能.新版本是1.5,可以在sourceforge上下載.
安裝:
安裝的目的其實(shí)就是產(chǎn)生兩個(gè)文件:一個(gè)是用于加密PHP文件的screw, 另一個(gè)就是php加載的解析模塊php_screw.so
1.將源代碼包展開(kāi), 并進(jìn)入該入目錄:
2. 執(zhí)行phpize, 就會(huì)在該目錄下產(chǎn)生一個(gè)configure
3. 然后,運(yùn)行configure
4. 再make
這樣, 解析用的php_screw.so就生成了. 接下來(lái)要得到加密用的screw
1. 進(jìn)入源碼的tools目錄
2. make
這樣就生成了screw了. 如果要加密一個(gè)lx.php文件, 則: screw lx.php, lx.php就變成加密的了, 原來(lái)明文的lx.php被改名為lx.php.screw
接下來(lái)的任務(wù)就應(yīng)該是加載php_screw.so模塊了,
首先, 將該文件COPY到module目錄下, 具體是哪個(gè)目錄,可以參見(jiàn)/etc/php.ini配置文件中的extension_dir項(xiàng),RHEL 5中為/usr/lib/php/modules
方法一:可以在/etc/php.d目錄下新建一個(gè)screw.ini文件(文件是可以任意取的),其內(nèi)容是一句話extension=php_screw.so
方法二:通過(guò)修改php.ini文件, 增加了一句extension=php_screw.so, 重啟apache后就成功了.
重要說(shuō)明:

編譯的.so文件理論上跟你當(dāng)前的php版本是相關(guān)的,也就是說(shuō),如果你是在php 5.1下編譯的,就不能拿到php 5.2下去用,因?yàn)閜hp的可加載模塊總是與其版本相關(guān)的.而加密用的screw可執(zhí)行文件理論上講無(wú)所謂,只有他跟screw.so屬于同一個(gè)版本就可以
測(cè)試:
編寫(xiě)一個(gè)hello, world程序,文件名為hello.php如下:


復(fù)制代碼 代碼如下:


<?phpecho
"Hello,world";
?>



用php  hello.php測(cè)試程序是否能成功顯示, 成功顯示后, 用screw對(duì)其進(jìn)行加密(screw  helllo.php), 然后cat一下該php文件, 發(fā)現(xiàn)已經(jīng)不是文本的了, 變成了許多亂字符, 說(shuō)明加秘成功, 然后再php  hello.php, 如果能正常顯示hello,world, 則說(shuō)明加密的解析也沒(méi)有問(wèn)題了, 一切就算OK了.否則, 就說(shuō)明還有不對(duì)的地方, 需要再仔細(xì)檢查.
安裝過(guò)程中遇到的問(wèn)題:
1.找不到phpize
phpize是屬于php-develp的一個(gè)工具, (具體作用請(qǐng)自行解決) 因此, 必須要安裝php-develp包. 中間有一些依賴, 如下:


復(fù)制代碼 代碼如下:


[root@localhost Server]# rpm -ivh php-devel-5.1.6-5.el5.i386.rpm
 warning: php-devel-5.1.6-5.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
 error: Failed dependencies:
 autoconf is needed by php-devel-5.1.6-5.el5.i386
 automake is needed by php-devel-5.1.6-5.el5.i386
 [root@localhost Server]# rpm -ivh autoconf
 autoconf213-2.13-12.1.noarch.rpm autoconf-2.59-12.noarch.rpm
 [root@localhost Server]# rpm -ivh autoconf-2.59-12.noarch.rpm
 warning: autoconf-2.59-12.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
 error: Failed dependencies:
 imake is needed by autoconf-2.59-12.noarch
 [root@localhost Server]# rpm -ivh imake-1.0.2-3.i386.rpm
 warning: imake-1.0.2-3.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
 Preparing... ########################################### [100%]
 1:imake ########################################### [100%]
 [root@localhost Server]# rpm -ivh autoconf-2.59-12.noarch.rpm
 warning: autoconf-2.59-12.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
 Preparing... ########################################### [100%]
 1:autoconf ########################################### [100%]
 [root@localhost Server]# rpm -ivh automake
 automake14-1.4p6-13.noarch.rpm automake16-1.6.3-8.noarch.rpm automake-1.9.6-2.1.noarch.rpm
 automake15-1.5-16.noarch.rpm automake17-1.7.9-7.noarch.rpm
 [root@localhost Server]# rpm -ivh automake-1.9.6-2.1.noarch.rpm
 warning: automake-1.9.6-2.1.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
 Preparing... ########################################### [100%]
 1:automake ########################################### [100%]
 [root@localhost Server]# rpm -ivh php-devel-5.1.6-5.el5.i386.rpm
 warning: php-devel-5.1.6-5.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
 Preparing... ########################################### [100%]
 1:php-devel ########################################### [100%]



2.每個(gè)加密的文件頭部都一個(gè)很明顯的字符串PM9SCREW, 這樣很容易被人猜到是用screw加密的.
這個(gè)問(wèn)題的解決需要在安裝的第一步就開(kāi)始. 該標(biāo)識(shí)串在源碼的php_screw.h中. 在編譯之前, 可以更改這個(gè)字符串, 例如,更改為PeterHu, 相應(yīng)的下面的長(zhǎng)度就不再是10了, 而是\tPeterHu\t,一共7個(gè)了.


復(fù)制代碼 代碼如下:


#define PM9SCREW        "\tPM9SCREW\t"
#define PM9SCREW_LEN     10



==================================================================================
網(wǎng)上看了好多PHP_SCREW安裝文章.也看過(guò)好幾次源碼報(bào)里的READEME.
真折騰,要么腳本方式執(zhí)行不了,要么網(wǎng)頁(yè)無(wú)法顯示.經(jīng)過(guò)不屈不撓的折騰終于折騰出來(lái)了......分享以下方法...若有大蝦知道具體原因不妨指點(diǎn)一二.
PS:CentOS release 5.8 (Final),php5.2.x
下載php-screw-1.5,若是php4用php-screw-1.3
源碼包:/tupian/20230522/download -zxvf php_screw-1.5.tar.gz(出來(lái)permission之類(lèi)錯(cuò)誤就加sudo)
2.cd php_screw_1.5
3.phpize(執(zhí)行不了就寫(xiě)phpize的絕對(duì)路徑,裝好了的前提下)
4.vi my_screw.h(里面是密碼,想改就改,好不要超過(guò)5位數(shù),若改了要記好,因?yàn)橹匦戮幾g時(shí)要用)
5.vi php_screw.h(里面是加密字符串,默認(rèn)是PM9SCREW,好改成別的字符串,字符串變了下面長(zhǎng)度也要跟著變,改成LOVE的話長(zhǎng)度就是6了,字符串要記下)
6. ./configure
7. make && make install
成功了會(huì)輸出:Installing shared extensions:     /usr/lib64/php/modules/(這個(gè)目錄是/etc下php.ini里extension_dir指定的目錄).php_screw.so文件就在這里,當(dāng)然編譯目錄的modules下也有.
8. cd tools/
9. make
這樣生成了加密用的程序screw了
10. cp screw /usr/bin下
這樣加密的時(shí)候可以直接screw 文件名了,不用寫(xiě)screw的路徑
11.修改ini
cd /etc/php.d(這里是php.ini加載的各種擴(kuò)展可以在這寫(xiě),打開(kāi)別的文件看看就知道了)
vi php_screw.ini
里面寫(xiě)上extension=php_screw.so保存退出
12.重啟apache
在根目錄下創(chuàng)建hello.php
<?echo 'hello';?>
php hello.php
輸出:hello
screw hello.php
輸出:Success Crypting(hello.php),說(shuō)明加密成功,目錄下會(huì)多出一個(gè)文件hello.php.screw,現(xiàn)在的hello.php已經(jīng)是加密過(guò)的了,而多出的則是源文件的備份.
cat hello.php顯示亂碼.
php hello.php 輸出hello.腳本方式解析加密文件成功了.
在根目錄下建立phpinfo,里面若有php_screw擴(kuò)展相關(guān)信息就說(shuō)明可以通過(guò)瀏覽器訪問(wèn)加密的文件了.不用繼續(xù)往下看了.我是有兩個(gè)php.ini,網(wǎng)頁(yè)跟腳本方式調(diào)用的ini不同.
接下來(lái)要重新編譯一次了,為了可以在網(wǎng)頁(yè)里正常顯示.
1.去編譯目錄
make clean
然后把目錄給刪了.
2.tar -zxvf php_screw.1.5.tar.gz重新解壓
3. phpize
4. myscrew.h跟php_screw.h里的密碼跟字符串記得要跟之前的一樣
5. ./configure --with-php-config=php-config路徑(php安裝目錄下有)
6.make && make install
輸出:Installing shared extensions:     /var/www/php5/lib/php/extensions/no-debug-non-zts-20060613/
(這次php_screw.so在這個(gè)目錄下咯)
7.php_screw.so復(fù)制到phpinfo里extension_dir指定的目錄,我的是/var/www/modules下
8.修改php.ini(php安裝目錄下的,phpinfo里會(huì)顯示載入的是哪個(gè)ini,就改那個(gè))
 在最下方添加extension=php_scrw.so
9.重啟apache
10.在phpinfo里看看有木有php_screw相關(guān)信息,有的話就ok了~
至此,安裝結(jié)束了,雖然有點(diǎn)點(diǎn)頭緒,但我還是沒(méi)太搞明白為什么得這樣編譯兩次才行......
PS:編譯過(guò)程中碰見(jiàn)的幾個(gè)問(wèn)題如下(解決方法)
1。 /root/php_screw-1.5/php_screw.c: In function ‘pm9screw_compile_file':
解決方法:
需要修改php_screw.c
把第78,84,93行的org_compile_file(file_handle, type);
修改為:
org_compile_file(file_handle, type TSRMLS_CC);
然后再make就成功了。
2. /opt/soft/php_screw-1.5/php_screw.c: In function ‘zm_startup_php_screw':/opt/soft/php_screw-1.5/php_screw.c:124: 錯(cuò)誤:‘zend_compiler_globals' 沒(méi)有名為 ‘extended_info' 的成員/opt/soft/php_screw-1.5/php_screw.c: In function ‘zm_shutdown_php_screw':/opt/soft/php_screw-1.5/php_screw.c:133: 錯(cuò)誤:‘zend_compiler_globals' 沒(méi)有名為 ‘extended_info' 的成員make: *** [php_screw.lo] 錯(cuò)誤 1
解決方法:
需要修改php_screw.c
把CG(extended_info) = 1;
修改為:
CG(compiler_options) |= ZEND_COMPILE_EXTENDED_INFO;
php_screw如何對(duì)當(dāng)前目錄下,對(duì)目錄下包含的文件,以及包含目錄下的文件進(jìn)行整體加密
find ./ -name "*.php" -print|xargs -n1 screw //加密所有的.php文件
find ./ -name "*.screw" -print/xargs -n1 rm //刪除所有的.php源文件的備份文件
命令都實(shí)驗(yàn)過(guò)成功的.........應(yīng)該沒(méi)什么再補(bǔ)充的咯.....


以上是“php_screw怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)頁(yè)標(biāo)題:php_screw怎么用-創(chuàng)新互聯(lián)
本文URL:http://bm7419.com/article2/djhooc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)站建設(shè)、品牌網(wǎng)站制作定制網(wǎng)站、手機(jī)網(wǎng)站建設(shè)微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司