热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

windows10下编译php扩展

在Windows上开发PHP扩展模块虽然不怎么用到windows下开发php扩展,但是有的时候有些人就是想安装到windows下运行。没有办法,只能针对性的重新编译。这里较全面的介

在Windows上开发PHP扩展模块

虽然不怎么用到windows下开发php扩展,但是有的时候有些人就是想安装到windows下运行。没有办法,只能针对性的重新编译。

这里较全面的介绍如果在windows下编译php扩展

一、开发环境搭建

1.      Windows10 64位,

下载wampserver64位,https://www.wampserver.com/en/#wampserver-64-bits-php-5-6-25-php-7

在安装wampserver64位时,尽量把相关的SDK安装全了。尤其是Microsoft Visual C++ 2015-2022 Redistributable(x64)。这个东西到官网下载最快,不要到其他网站,很多垃圾。不安装这些sdk,可能wampserver64起不来哦。

因为我用的是php7.2.34版本,所以还需要下载php7.2.34版本的源代码。https://www.php.net/distributions/php-7.2.34.tar.gz

因为php-7.2.34使用VC15 x64编译的,VC15对应的Visual Studio 2017。所以尽量对应的版本来编译。

还需要下载Cygwin (http://www.cygwin.com)

Cygwin是在调用PHP扩展模块生成工具ext_skel_win32.php时使用,主要模拟一些unix的命令,否则该文件中的一些代码是执行不通的哦。注意:安装时提示选取镜像站点下载模块时,选择.cn结尾的站点速度最快。

安装完成Cygwin之后(安装路径记为[Cygwin Path]),需要将[PHP Source]\ext\ext_skel_win32.php文件中的$cygwin_path设置为[Cygwin]\bin目录路径。
这里有很多坑,但是一些环境必要的插件要勾选。具体参考一下这篇文章https://blog.csdn.net/u010356768/article/details/90756742。如果有额外你需要用的,自己追加啊。

最终会在桌面生成一个Cygwin64 Terminal的快捷方式。

cygwin 安装路径c:\cygwin64,根据你实际安装的来替换。

“PHP源文件目录/ext/ext_skel_win32.php”,在这里就是:E:\c_source_code\php-5.2.5\ext,其中主要是修改其中的

cygwin路径。$cygwin_path = 'c:\cygwin64\bin';

把$cygwin_path修改为你实际安装cygwin的路径,这样在下一步生成扩展的时候就不太会出错了。

二、生成扩展

先把php.exe追加到操作系统的环境变量里。例如:

 

 

 再打开cmd命令,进入[PHP Source]\ext\目录,执行php ext_skel_win32.php --extname=foo,最终在[PHP Source]\ext\目录下会生成一个foo目录,扩展插件样例代码生成成功。

然后用VS2017在foo目录创建一个工程,并做一些配置:具体参考:https://www.cnblogs.com/taotaodmw/p/14206707.html。该步骤要注意,我们是php7.2.34,需要把php7ts.lib配置到vs2017里。

但是这里需要选择Windows SDK版本为10,如果选择其他版本,有可能编译的时候说找不到xxx.h文件。

正常这样下来,foo.dll是会在[PHP Source]\ext\foo\x64\release下生成了。

最后把这个foo.dll复制一份到

把foo.dll拷到C:\wamp64\bin\php\php7.2.34\ext目录下,修改名称为php_foo.dll,这样在php.ini(注意是appache里的php.ini链接,参考:C:\wamp64\bin\apache\apache2.4.51\bin\php.ini。不改这个重启也无用)里加上一行extension=foo就可以了。因为配置文件是按照这样的格式识别的:extension='php_.dll

重启一下apache,查看phpinfo();,会发现我们的PHP扩展foo()已经加载进来,已经可以使用这个foo扩展了。

 

 



推荐阅读
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • VSCode快速查看函数定义和代码追踪方法详解
    本文详细介绍了在VSCode中快速查看函数定义和代码追踪的方法,包括跳转到定义位置的三种方式和返回跳转前的位置的快捷键。同时,还介绍了代码追踪插件的使用以及对符号跳转的不足之处。文章指出,直接跳转到定义和实现的位置对于程序员来说非常重要,但需要语言本身的支持。以TypeScript为例,按下F12即可跳转到函数的定义处。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
author-avatar
arashilan
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有