ホームページ >バックエンド開発 >PHPチュートリアル >php_screw 1.5:php暗号化: インストールと使用方法の詳細な説明_PHPチュートリアル
通常、PHP ファイルはテキスト形式でサーバー側に保存されるため、ソース コードを保護するために、ソース コードを暗号化することができます:
まず、暗号化プログラムは PHP ファイルの暗号化を実装します。もう 1 つは、暗号化された PHP ファイルを解析して実行結果を取得することです。後者の実装のほとんどは単なるプログラムです。 PHP モジュール
php_screw (screw) を使用すると、上記の機能を実現できます。最新バージョンは 1.5 で、sourceforge からダウンロードできます。
インストール:
インストールの目的は、実際には 2 つのファイルを生成することです。1 つは暗号化用です。ファイルの PHP スクリュー、もう 1 つは解析モジュールです php_screw.so
1. ソース コード パッケージを展開し、ディレクトリに入ります 2. phpize を実行すると、ディレクトリにconfigure が生成されます
3. 、configure
4を実行すると、解析に使用するphp_screw.soが生成されます
1.ソースコードのtoolsディレクトリに入りますこれ。 lx.php ファイルを暗号化したい場合は、screw lx.php、lx.php が暗号化され、元のプレーンテキスト lx.php が lx.php.screw に名前変更されます。 php_screw.so モジュールがロードされます。まず、ファイルをモジュール ディレクトリにコピーします。具体的なディレクトリについては、/etc/php.ini 設定ファイルの extension_dir 項目を参照してください。RHEL 5 では、これは /usr です。 /lib/php/ modules
方法 1: /etc/php.d ディレクトリに新しい screw.ini ファイルを作成できます (ファイルは任意に取得できます)。その内容は 1 つの文です
extension= php_screw.so
方法 2: パス php.ini ファイルを変更し、extension=php_screw.so を追加し、Apache を再起動すると成功します。
重要な注意:
コンパイルされた .so ファイルは理論的にはつまり、PHP 5.1 でコンパイルした場合、PHP 5.2 で使用することはできません。これは、PHP のロード可能なモジュールが常にそのバージョンに関連しているためです。理論的には、暗号化に使用される screw 実行可能ファイルは、screw.so が同じバージョンに属している限り問題ありません。 テスト: 次のように、hello, world プログラムを作成し、ファイル名を hello.php にします。
コードをコピーします
コードは次のとおりです:
"Hello, world";
?>
phpize は php-develp に属するツールです (具体的な機能は自分で調べてください) したがって、php-develp パッケージをインストールする必要があります次のように、途中にいくつかの依存関係があります:
コードをコピーします
コードは次のとおりです:
[root@localhost Server]# rpm -ivh php-devel-5.1.6-5.el5.i386.rpm
警告: php-devel-5.1.6-5.el5.i386.rpm: ヘッダー V3 DSA 署名: NOKEY、キー ID 37017186
エラー: 失敗した依存関係:
autoconf は php-devel-5.1.6-5.el5.i386 で必要です
automake は php-devel-5.1.6-5.el5.i386 で必要です
[ root@localhost サーバー]# rpm -ivh autoconf
autoconf213-2.13-12.1.noarch.rpm autoconf-2.59-12.noarch.rpm
[root@localhost サーバー]# rpm -ivh autoconf-2.59-12.noarch.rpm
警告: autoconf-2.59-12.noarch.rpm: ヘッダー V3 DSA 署名: NOKEY、キー ID 37017186
エラー: 失敗した依存関係:
imake は autoconf-2.59-12.noarch に必要です
[root@localhost Server]# rpm - ivh imake-1.0.2-3.i386.rpm
警告: imake-1.0.2-3.i386.rpm: ヘッダー V3 DSA 署名: NOKEY、キー ID 37017186
準備中... ###### ################################# [100%]
1:imake ####### ################################## [100%]
[root@localhost サーバー]# rpm - ivh autoconf-2.59-12.noarch.rpm
警告: autoconf-2.59-12.noarch.rpm: ヘッダー V3 DSA 署名: NOKEY、キー ID 37017186
準備中... ############ ############################# [100%]
1:autoconf ########### ############################## [100%]
[root@localhost サーバー]# 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: ヘッダー V3 DSA 署名: NOKEY、キー ID 37017186
準備中... ######################################## [100% ]
1:automake ########################################### [100 %]
[root@localhost Server]# rpm -ivh php-devel-5.1.6-5.el5.i386.rpm
警告: php-devel-5.1.6-5.el5.i386.rpm: ヘッダー V3 DSA署名: NOKEY、キー ID 37017186
準備中... ##################################### ##### [100%]
1:php-devel ################################ ######## [100%]
2.每密的文件头部都一很明显的字符串PM9SCREW、これ样很容易に人猜到是用ネジ加密的。この問題の解決は、インストールの最初の段階で開始する必要があります。 このネジはソースコードのphp_screw.h内にあります。 輖译の前に、この文字列を変更することができます。たとえば、PeterHu、対応する下の長さはもう 10 了ではなく、tPeterHut、一共 7 个了です。
#define PM9SCREW "tPM9SCREWt"#define PM9SCREW_LEN 10
================================================ === =================================
私はインターネット上で PHP_SCREW のインストールに関する記事をたくさん読みました。いくつかのソース コード レポートもお読みください。
スクリプトが実行できないか、Web ページが表示されないので、本当にイライラします。具体的な理由がわかったら、アドバイスをお願いします。
PS: CentOS リリース 5.8 (最終版)、php5.2.x
php4 が php-screw-1.3 を使用する場合は、php-screw-1.5 をダウンロードしてください
ソースコード。パッケージ: http://sourceforge.net/projects/php-screw /files/latest/download?source=files
ソースコードパッケージを/usr/localに置き、インストールを開始します
1.tar -zxvf php_screw-1.5。 tar.gz (パーミッションなどのエラーがある場合はsudoを追加)
2. cd php_screw_1.5
3.phpize (実行できない場合はインストールされていればphpizeの絶対パスを書く)
4.vi my_screw .h (パスワードが含まれています。必要に応じて変更します。5 桁を超えないようにするのが最善です。変更する場合は、再コンパイル時に使用されるため、覚えておいてください)
5.vi php_screw.h (暗号化されたパスワードが含まれています)文字列、デフォルトは PM9SCREW、別の文字列に変更するのが最善です、文字列が変更された場合は文字列の長さも従う必要があります)変更します、LOVE に変更された場合、長さは 6 になり、文字列は記録される必要があります)
6. ./configure
7. make && make install
成功すると、次のように出力されます: 共有拡張機能のインストール: /usr/lib64/php/modules/( このディレクトリは、/etc の下の php.ini で指定されたディレクトリです). php_screw.so ファイルは、もちろん、コンパイル ディレクトリの modules の下にあります。
8. cd tools/
9. このようにして、暗号化プログラムが生成されます。 /usr/bin
このように、暗号化する際にscrewパスを書かずにファイル名を直接ネジ込むことができます
11.ini
cd /etc/php.dを修正(ここはphp.iniで読み込まれます) 様々な拡張子を書き込むことができますここでは、他のファイルを開けば分かります)
vi php_screw.ini
extension=php_screw.soを書き込んで保存して終了
12.apacheを再起動
ルートディレクトリにhello.phpを作成
< ;?echo 'hello ';?>
php hello.php
出力: hello
ネジ hello.php
出力: Success Crypting(hello.php)、暗号化が成功したことを示し、ディレクトリに追加のファイル hello.php が存在します。 . ネジ、現在の hello.php はすでに暗号化されており、追加のものはソース ファイルのバックアップです。
php hello.php は暗号化されたファイルを正常に解析しました。
phpinfo をルート ディレクトリに作成します。php_screw 拡張子に関連する情報がある場合、暗号化されたファイルにブラウザからアクセスできることを意味します。php.ini と Web ページが 2 つあります。スクリプトによって呼び出されるiniが異なります。
次のステップは、Webページに正しく表示するために再コンパイルすることです。
1. コンパイルディレクトリに移動します
クリーンにする
その後、ディレクトリを削除します。
2.tar -zxvf php_screw.1.5.tar.gz 再解凍します
3. phpize
4. myscrew.h と php_screw.h のパスワードと文字列は前と同じである必要があります
5. =php-config パス (php インストール ディレクトリにパスがあります)
6.make && make install
出力: 共有拡張機能のインストール: /var/www/php5/lib/php/extensions/no-debug-non-zts -20060613/
(今回は php_screw.so がこのディレクトリにあります)
7.php_screw.so が phpinfo の extension_dir で指定されたディレクトリにコピーされます。私の場合は /var/www/modules の下にあります
8.php.ini を変更します。 php のインストール ディレクトリに、phpinfo にどの ini がロードされているかが表示されます。それを変更するだけです)
一番下に extension=php_scrw.so を追加します
9. apache
10 を再起動します。phpinfo に php_screw 関連の情報があるかどうかを確認します。大丈夫ですよ~
この時点でインストールは完了しました。少し手がかりはありますが、なぜこのように2回コンパイルしなければならないのかまだよくわかりません...
追記: インストール中にいくつかの問題が発生しました。コンパイルプロセスは次のとおりです (解決策)
1. /root/php_screw-1.5/php_screw.c: 関数 'pm9screw_compile_file' 内:解決策:
php_screw.c を変更する必要がありますorg_compile_file(file_handle, type) の 78、84、93 行目を変更します。
対象:
org_compile_file(file_handle, type TSRMLS_CC);これでmakeは成功します。
2. /opt/soft/php_screw-1.5/php_screw.c: 関数内 'zm_startup_php_screw':/opt/soft/php_screw-1.5/php_screw.c:124: エラー: 'zend_compiler_globals' には名前 'extended_info' がありません/opt/soft/php_screw-1.5/php_screw.c のメンバー: 関数 'zm_shutdown_php_screw':/opt/soft/php_screw-1.5/php_screw.c:133: エラー: 'zend_compiler_globals' には 'extended_info' という名前のメンバーがありません。 *** [php_screw.lo] エラー 1
解決策:php_screw.c を変更する必要があります
CG(extended_info) = 1;
を:
CG(compiler_options) |= ZEND_COMPILE_EXTENDED_INFO;
php_screw Encrypt はどうですか現在のディレクトリ内のファイル、ディレクトリに含まれるファイル、およびそのディレクトリ内のファイル全体find ./ -name "*.php" -print|xargs -n1screw //すべての .php ファイルを暗号化します
find . / -name "*.screw" -print/xargs -n1 rm //.php ソース ファイルのバックアップ ファイルをすべて削除します コマンドは正常にテストされました...追加するものは何もないはずです。