Windows 端编译 azhenc 扩展:以 Win10+PHP8.0.25 为例
AZHENC是本人用C写的一个PHP加密扩展,支持PHP7.0-PHP8.1的代码加密。
1、安装 Visual Studio
php7.0、php7.1 版本依赖 vc14 需要提前安装 visual studio 2015
php7.2、php7.3、php7.4 版本依赖 vc15 需要提前安装 visual studio 2017
php8.、php 8.1 版本依赖 vs2016 需要提前安装 visual studio 2019
注:使用高版本的visual studio 2022,虽然可以兼容,但是编译会出现各种奇葩问题,无法解决,建议使用对应版本编辑器进行编译。本人用的 win10 操作系统所以 sdk 选的是 win10 的,如果是其他版本的 windows,选择对应的 sdk 安装即可。
VS2015 所需模块:
VS2017 所需模块:
VS2019 所需模块:
2、下载 php 的 windows 源码包
windows 源码包下载地址:https://windows.php.net/downloads/releases/archives/
3、下载 windows 端构建 PHP 的工具包(php-sdk-binary-tools-master【版本2.2.1-dev】),文章下方提供下载,也可搜索去微软官方下载。
二、开始构建 Windows 端的 azhenc 扩展
1、解压 PHP 的工具包,运行 CMD 并将目录切换到工具包的根目录(例:E:\php-sdk)
2、运行对应版本的 bat 文件,此处为 php8.0.25 编译 64 位版本扩展,需要运行phpsdk-vs16-x64.bat,出现下图所示结果说明正常否则说明对应版本所需的 Visual Studio 未正确安装。
3、运行 phpsdk_buildtree phpdev,成功后会在工具包的根目录创建如下(phpdev\vc15\x64)结构的目录并自动切换到该目录下
4、将 php 源码包复制到上一步操作生成的目录下并解压,与 deps 目录平级。
5、将 azhenc 扩展源码复制到 php 源码包目录下的 ext 目录,结构如下:
6、回到 cmd 窗口,将路径切换到 php 源码包目录下并执行 buildconf
7、执行 configure –help,如果出现如下提示,再次执行一遍 configure –help 即可
8、configure –help 的结果中如果出现下图信息,则说明 azhenc 扩展可用
9、配置并编译生成 dll 文件
NTS 版本扩展配置命令:configure --disable-all --enable-cli --enable-azhenc=shared --disable-zts
TS 版本扩展配置命令: configure --disable-all --enable-cli --enable-azhenc=shared
①构建 NTS 版 dll:
运行:configure --disable-all --enable-cli --enable-azhenc=shared --disable-zts
执行 nmake,成功后会在源码包如下位置生成 dll 文件
②构建 TS 版 dll,依次执行:configure --disable-all --enable-cli --enable-azhenc=shared
执行 nmake,成功后会在如下位置生成 TS 版的 dll 文件
如果编译 32 位的,则生成目就为少了 x64 这层目录,直接在源码包根目录下产生 Release与 Release_TS 目录
其他版本不再赘述,可用的dll文件均可按上述方法生成,请根据自己的PHP版本选择生成对应的dll。
10、使用
将编译好的文件 php_azhenc.dll 加入到对应php版本的配置项(修改php.ini,在最下方写入 extension = php_azhenc.dll),重启 PHP 服务,然后在cmd命令输入php -m查看
azhenc扩展安装后,便可以进行加密php,在运行时也会自动解密php。输入php azhenc.php dir,这样即可加密dir 目录下的所有 php 文件,PHP 在运行它们时会自动解密