环境配置最好还是看官方的文档:
https://wiki.php.net/internals/windows/stepbystepbuild_sdk_2
1. 所需工具
- Visual Studio 2019 Community https://visualstudio.microsoft.com/
 - php源码 https://github.com/php/php-src/releases
 - php sdk编译工具,最好用2.1.10,小于此版本的没有尝试成功 https://github.com/microsoft/php-sdk-binary-tools/releases
 - 源码调试工具Visual Studio Code https://code.visualstudio.com/download
 
2. 安装Visual Studio
在正式编译源码之前需要安装Visual C++,但是这个比较奇怪,我没整明白,一开始下载了Visual C++ Redistributable for Visual Studio 2015,但是安装了之后,进入php_sdk_binary_tools目录,执行phpsdk-vc15-64.bat,结果还是报错:
1  | Could not determine 'vc15' directory  | 
官方文档中给的建议是安装Visual Studio:

根据官方提示,到官网https://visualstudio.microsoft.com/下载`Visual Studio 2019 Community版本,安装时选择使用C++的桌面开发`,详细安装项保持默认就好。
3. 编译前依赖准备
解压下载好的php_sdk_binary_tools,进入目录后,会发现有四个文件:
1  | phpsdk-vc14-x64.bat  | 
因为我下载的是Visutal Studio 2019 x64,所以对应的是phpsdk-vc15-x64.bat,在Powershell或是cmd中运行该bat文件,看到下面的提示就表示成功了,这里我使用的php sdk版本是2.1.10,低于此版本的我在后面执行phpsdk_deps --update --branch master时总会报错。此时可以看到powershell窗口变成了$符号:

运行创建目录的命令
1  | phpsdk_buildtree php7  | 

将下载的php源码也解压到目录php7/vc15/x64下,然后进入源码目录,我这里是php-src-php-7.2.25,执行命令下载php7编译所需要的依赖组件:
1  | phpsdk_deps --update --branch master  | 

这里真的很坑,根据我自己的测试,这个真的很难下载,不知道是不是因为是在晚上,网络不太好,挂了代理也不行,完全下载不下来。
所以可以直接到 https://windows.php.net/downloads/php-sdk/deps 下载所需的依赖组件,注意选择和自己的vc版本适配的依赖,比如我安装的Visual Studio 2019对应的vc版本是vc15,我的系统是x64,所以就要下载https://windows.php.net/downloads/php-sdk/deps/vc15/x64/ 中的所有依赖包。
里面有很多依赖,有53个zip文件包

将它们全部都下载下来,然后解压到你的php-sdk-binary-tools-php-sdk-2.1.10\php7\vc15\x64\deps文件夹下,这个文件夹下本来有三个文件夹,分别是lib,bin和include,这个不用管。
下载并解压完成后,进入源码所在目录,执行
1  | buildconf  | 
 该命令会释放configure.bat和configure.js两个文件,返回下面两行就说明没问题:
1  | Rebuilding configure.js  | 
按照提示,继续执行:
1  | configure --help  | 
在shell中执行下面的命令来配置相关的php编译选项
1  | configure --disable-all --enable-cli --enable-debug --enable-phar  | 
如果还有别的需求,可以查看configur --help中的选项。
成功执行后就是这样的

然后执行nmake命令进行编译就可以了:
1  | nmake  | 
看到SAPI sapi\cli build complete,说明编译成功。

编译成功后,进入x64\Debug_TS目录,编译好的可执行php.exe文件就在该文件夹下,对我来说该文件夹就是``,执行
1  | php -v  | 

编译到这一步就完成了。
4. 配置调试环境
因为Visual Studio 2019这个软件太大了,运行占用内存也比较大,仅仅跟踪调试源码根本不需要这么多功能,所以可以用Visual Studio Code这个轻量级的IDE来替代。
打开Visual Studio Code,安装调试源码所需要的C/C++扩展:

然后打开源码所在目录,也就是php7\vc15\x64目录下的php-src-php-7.2.25,File -> Open Folder,然后修改配置文件,Run -> Add Configuration:

在弹出的窗口里选择C++(Windows):

会自动跳出launch.json,像下面这张图一样进行配置:

这里必须要修改的是三个地方,program,args和cwd:
1  | {  | 
可以测试一下,新建一个php文件,命名为pathinfo.php:
1  | 
  | 
看看能不能跟踪到pathinfo函数,先全局搜索一下该函数(右边有个放大镜),搜索PHP_FUNCTION(pathinfo),在string.c文件中,我们在该处打个断点:

然后Run -> Start Debugging,不出意外,可以看到停在了断点处。

接下来就可以愉快的调试了,不枉我捣鼓一晚上,其中最费时的就是编译前下载依赖那一块,最好就是直接去下载,用命令下载真的超级慢…
5. 参考
如果还有其他的问题,可以参考这两篇文章: