本文主要使用screw plus (screw plus是一个开源的php扩展) 实现PHP源码加密,记录screw plus编译过程及使用方法,默认已经安装好完整LNMP环境;
测试操作系统:CentOS release 6.9 (Final)
- 在GitHub上获取screw plus源码
https://github.com/del-xiong/screw-plus
git clone https://git.oschina.net/splot/php-screw-plus.git
2.进入screw plus 源码目录,并检测PHP环境
cd php-screw-plus
在php-screw-plus目录中执行phpize,phpize是用来扩展php扩展模块的,通过phpize可以建立php的扩展模块,而screw plus就是一个PHP扩展模块;
执行成功后可以看到当前的php api版本,扩展api版本等。
[root@test php-screw-plus]# /usr/bin/phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
[root@test php-screw-plus]#
phpize一般在php的bin目录下或用户的bin目录下可以找到,如无法找到phpize目录,可通过文件搜索,或确认是否安装了php-devel。
yum -y install php-devel
3.配置screw plus 及PHP路径
./configure --with-php-config=/usr/bin/php-config
如果没报错,说明配置成功了,可以开始下一步编译了。编译之前,建议修改加密的key,使用VIM打开php_screw_plus.h文件,修改#define CAKEY 后面的默认key值。
#define CAKEY "FwWpZKxH7twCAG4JQMO"
//如果只允许执行加过密的php文件 设置STRICT_MODE为1
//set STRICT_MODE to 1 if you only want the crypted php files to be executed
#define STRICT_MODE 0
#define STRICT_MODE_ERROR_MESSAGE "ACCESS DENIED"
const int maxBytes = 1024*1024*2;
修改保存完毕之后,使用make命令开始编译,最后提示Build complete.说明编译成功,编译生成的扩展文件在modules里面
make
- 进入tools目录执行make编译生成加密程序
cd tools/
make
5.启用PHP的加密扩展,编辑php.ini文件,加入screw plus扩展。modules/php_screw_plus.so 路径
vim /etc/php.ini
加入以下扩展配置
extension=/home/php_screw_plus/modules/php_screw_plus.so
重启Apache服务后输出phpinfo信息,如果能找到php_screw_plus,就说明扩展生效了。
6.加密PHP文件
进入tools目录后,执行./screw php文件或文件夹
./screw test.php
执行完成后,再次查看test.php,会发现内容已经变成乱码,但不影响访问,说明加密成功;