前言

一开始我是拒绝的学习php内核的,一是对c有些许抗拒,二是觉得意义不大。但经由此次TQLCTF中SQL_TEST题目的洗礼后,我深刻地意识到真正的Web手就该对语言底层有所了解,在Java就是研究Jvm,php上则是研究php底层C实现。

环境搭建

虽然各路大神都觉得环境搭建不值一提,但菜鸡如我仍是踩了很多坑,在此记录一下。

1. 下载php源码

php_src
选版本下载即可

2. php sdk

php-sdk

  • The PHP SDK 2.2+ is compatible with PHP 7.2 and above.
  • The PHP SDK 2.1 is required to build PHP 7.1 or 7.0.

3. vs19

目前仅支持vs19,下载最新版本可能会有报错
vs19安装时勾选C++桌面支持

4. 编译php

进入php-sdk目录,运行phpsdk-vs16-x64.bat,若无特殊需求可无脑选16,向下兼容。
若出现闪退,检查vs19
若无异常,会进入shell
在该shell下cd 到php源码目录

phpsdk_deps --update --branchmaster
//若有报错可忽略

`buildconf.bat`

configure --disable-all --enable-cli --enable-debug --enable-phar
//开启SAPI cli、开启debug模式、开启phar扩展

成功后:

nmake编译后生成编译好的php.exe

5. 配置vscode

在vscode中安装C/C++扩展

编辑dubug,新增配置

配置详情

"name": "php7.4 source code debugger",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/x64/Debug_TS/php.exe", //编译好的php执行文件
"args": ["test.php"], //在执行目录下增加ph测试文件
"stopAtEntry": false,
"cwd": "${workspaceFolder}/x64/Debug_TS/", //执行目录
"environment": [],
"console": "internalConsole"

至此配置完毕


"孓然一身 , 了无牵挂"