そもそもPHP Screwってなんだ!?って話なんだけど(笑)
PHPを暗号化してくれるオープンソースのツールなんだな。まぁ、オープンソースなんで完璧って訳じゃないけど、作成したPHPをユーザ管理のサーバーに入れる時にソースがね、あまりきれいじゃないからさ。。。(^^;)
ただ、有償ソフトを使ってがっちりガードしないといけないかっていうとそこまででもないからオープンソースのPHP Screwを使ってみるのです。
早速インストールしてみる。
ソースしかないのでコンパイルする必要があるからgccとか必要な開発ツールは適当にインストールしといてね。
Sourceforgeからphp-screwのtar,gzをダウンロードする。
今回は2013年4月15日に更新されたバージョン1.5を使う。
そうそう、インストール環境はScientific Linux 6.4 64bitとかそんな感じ
ダウンロード先:http://sourceforge.net/projects/php-screw/files/latest/download
cd /usr/local/src/
wget http://downloads.sourceforge.net/project/php-screw/php-screw/1.5/php_screw-1.5.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fphp-screw%2F&ts=1375776572&use_mirror=jaist
tar zxvf php_screw-1.5.tar.gz
cd php_screw-1.5
phpize
そんなコマンドねーよと怒られる。なのでphp-develを入れる
yum -y install php-devel
さて、もう一度
phpize
今度はエラーが出なかったので次へ
./configure
おぉ!ここもエラー無し良いねぇ
make
/usr/local/src/php_screw-1.5/php_screw.c: In function ‘zm_startup_php_screw’:
/usr/local/src/php_screw-1.5/php_screw.c:124: error: ‘struct _zend_compiler_globals’ has no member named ‘e xtended_info’
/usr/local/src/php_screw-1.5/php_screw.c: In function ‘zm_shutdown_php_screw’:
/usr/local/src/php_screw-1.5/php_screw.c:133: error: ‘struct _zend_compiler_globals’ has no member named ‘e xtended_info’
make: *** [php_screw.lo] エラー 1
はい、エラーが出ました。
Cなんてわからんから諦めようかなぁ~と思ったけどGoogle先生に聞いてみた。
というか、ここ見たら全部書いてあるやん(--;)
いやいや、気をとりなおして・・・
vi php_screw.c
124行目と133行目を修正する
CG(extended_info) = 1;
↓
CG(compiler_options) |= ZEND_COMPILE_EXTENDED_INFO;
make
おっ!無事に通った。
このままでも使えるのだが、暗号化コードがデフォルトのままってのもどうなん?
って事でmy_screw.hを修正
shortコマンドを使ってるから32767を上限にってどっかに書いてあった
あっ、ここだわ
そんな訳で、適当な数字を,で繋いでいく。長くても複合化の速度は変わらないそうなので、複合化されるまでの時間を稼ぎたいなら長くしておくと良いさ(ぉ
そんな訳で、再度コンパイル
make clean
./configure
make
暗号化用のコマンドもコンパイルしちゃう
cd tools/
make
cp -p screw /usr/local/bin/
php_screw.soをphpのextentionsディレクトリに移動させる
cd ../modules/
cp -p php_screw.so /usr/lib64/php/modules/
※yumでphpをインストールしている場合ね
php.iniを修正してphp_screwを使えるようにする
vi /etc/php.ini
一番最後の行でも良いので追加する
extension=php_screw.so
WEBサーバーを再起動(今回はyumでインストールしたapache2系)
service httpd restart
こんな感じね
テストでphpinfo.phpを作成してみる
<?php
phpinfo();
?>
screw phpinfo.php
そもそものファイルはphpinfo.php.screwで保存される
さーWEBからアクセスしてみよう。
ちゃんと表示されたかな?