前言
一开始我是拒绝的学习php内核的,一是对c有些许抗拒,二是觉得意义不大。但经由此次TQLCTF中SQL_TEST题目的洗礼后,我深刻地意识到真正的Web手就该对语言底层有所了解,在Java就是研究Jvm,php上则是研究php底层C实现。
环境搭建
虽然各路大神都觉得环境搭建不值一提,但菜鸡如我仍是踩了很多坑,在此记录一下。
1. 下载php源码
php_src
选版本下载即可
2. 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"
至此配置完毕
Comments | NOTHING