php mb扩展 windows7,php7.4自定义扩展的编写Windows篇

php7.4自定义扩展的编写Windows篇

php7.4自定义扩展的编写Windows篇

其实我们很少会用到windows下的扩展,不过作为开发人员,在window下开发比较方便,所以我们一般的做法是架设一个phpstudy_pro的环境,然后开发好以后再上传,这里就涉及扩展问题,不急,我们先做准备工作

一、工具包的准备

php7.4和之前的版本不一样,我们必须下载全新的工具包

1、php-sdk-binary-tools

这个从7.2以后就不能使用以前官网的了,我们到GIT下个最新的,下载地址:

https://github.com/Microsoft/php-sdk-binary-tools

作为程序员你不可能连git账号都没有吧,登录以后下载并解压备用

a89e296df9bc00202f1808eeb0474102.png

2、准备php源码包,这里要选择正确的版本哟,登录php.net下载

https://windows.php.net/download#php-7.4

294c7d8f95328365f09a8d5c0607f85b.png

下载完了以后解压缩备用

二、编译环境的准备

这可是个麻烦事,php7.4用的是VC15也就是你要安装vs2017

Visual C++ 15.0 (Visual Studio 2017) for PHP 7.2+

dee24d78f2cd391f41687ab809fe6a8e.png

安装 Visual Studio(IDE)

到官网下载 Visual Studio Install,现在官网基本是2019了,2017估计你要找一下,一般都放在百度网盘,如果实在没有可以问我要,我就不专门分享了

dda08ca3f35c5572e6a81f61e5886e58.png

安装的时候如果出错,把你之前的.net版本全部从低到高安装一次一般就解决了

三、开始调试环境

把php-sdk-binary-tools解压到D:\php7.4.10下

4216b880f1d5280e2b836370af06fcf2.png

我们启动cmd,并进入这个目录

e6e5f6be727cf231aab6d4fe9c250a21.png

运行图中的文件,注意,这里运行哪个bat批处理文件是看你的系统的,不过现在一般都是64位了,32位请改成X86

cbf83ed4f8ab0016e733f53b56555ed5.png

运行后会发生变化,一直到出现$符号,然后运行 phpsdk_buildtree 批处理脚本,该脚本将创建所需的目录结构

phpsdk_buildtree phpdev

229cffb6cc76a22118b2732bc0a7aca2.png

程序会自动创建phpdev目录,以及根据你的系统和VC版本初始化并进入,我们可以看一下

761447b7d921dd77c35ccaed0c75edbc.png

这个时候我们创建一个phpsrc的目录,并把我们开始下载的源码文件放进去,这个目录是和deps平级的

f0b608fd0554d32d5d4bb393b53d8a89.png

四、扩展编写

1、创建扩展目录

cd phpsrc\ext

创建扩展框架

php ext_skel.php --ext lzpay

这些操作和在linux下其实是一样的

a7591b4af32188dd66940948e29d68f3.png

这个时候我们可以看一下,在ext目录已经有了新的扩展框架

d050ed7be3d553f5956526fd1a275e5a.png

2、编写扩展

关于扩展的编写我就不多讲了,不懂的可以参考我的另一篇文章

https://blog.csdn.net/weixin_48803304/article/details/108637733

如果你有过类似的操作,直接COPY过来也行

五、扩展编译

扩展写好了,接下来就是编译了,退回到phpsrc目录,执行 buildconf

buildconf

a87fabd0dc7379ae83cf946d0ca87179.png

按系统提示,运行configure --help查看

configure --help

d8d4eb316a2dcfc01f6902013eb0976c.png

我们关键是看有没有我们的扩展支持

2efc5de2aeb4b922bb4b43e0f153cd79.png

找到了,说明是成功的,那接下来就是把扩展编译为.dll文件,这里有个坑要注意,一般人都不知道,那就是我们使用configure进行编译时,系统默认php是ts模式的,但我们一般使用的是nts,还好有提供这样的参数,那就是–disable-zts,我们可以看一下,就在刚才的configure --help里

8648ff092ac3359cec01b1440a248d8d.png

这就好办了,接着开工,开始编译配置

configure --disable-all --enable-cli --enable-lzpay=shared --disable-zts

3aa758e1586189a785037a088a87f827.png

成功以后会有提示,我们可以看到正是我们想要的,No Thread Safety,下面按他的提示,执行nmake编译,这里可能需要几分钟时间。

编译成功后,会在phpsrc目录下生成个X64目录

d8fe10bf6586375de35799fdf5d7d5b1.png

进入目录,可以看到文件全部生成了

48cb800ed545b821be1ff2aac20bd377.png

将php_lzpay.dll复制到你的php目录下的ext目录,并在php.ini里加上,就重启动后就可以正常运行了。

0c5787bed26e23848e9c1d4c9906f8b5.png

php7.4自定义扩展的编写Windows篇相关教程

asp.net系统过滤器、自定义过滤器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值