0x00 下载资源
- PHP源码
- PHP SDK(phpsdk-vs16-x86.bat)
- vscode
选择自己需要调式的版本,我这里选择的是7.3.4
源码
php-7.3.4-src.zip
调试包
php-debug-pack-7.3.4-nts-Win32-VC15-x64.zip,主要用在vs里面调试的,可选
php sdk
sdk用于构建php
github仓库有vs14-vs16三个版本的sdk,第二个是低php版本的sdk下载地址

对应选择vc版本查询见下文链接
查看自己电脑的环境
控制面版-》卸载

后面发现这里是需要安装Visual Studio
不然会报错Could not determine 'vc15' directory
调式环境
安装VSCode,这里需要安装c/c++扩展

0x01 源码编译
进入php-sdk-binary-tools,直接运行对应的bat文件

切换到源码所在的目录
使用以下命令更新依赖
1 | phpsdk_deps --update --branchmaster |

然后运行
1 | buildconf.bat |

选择开启SAPI cli、开启debug模式、开启phar扩展;由于cli是单线程的,方便接下来的调试
1 | configure --disable-all --enable-cli --enable-debug --enable-phar |
当然这里需要根据自己的需求来,注意其中的依赖关系,比如libxml依赖iconv
1 | configure --disable-all --enable-cli --enable-debug --enable-phar --with-iconv --with-libxml --with-dom |
然后运行configure,运行后会显示一些php的配置信息

无误后使用nmake执行build,期间可能会有各种警告
提示complete完成build

之后在php源码目录中的x64/Debug_TS就生成了php.exe
测试

0x02 源码调试
打开php源码所在目录

可以在刚才的php.exe的同目录下创建test.php
然后选择一个c文件

然后会生成调试的配置文件.vscode/launch.json,修改它

1 | { |
然后打开sapi\cli\php_cli.c,在程序入口main函数打断点











