转载请注明文章出处:https://tlanyan.me/windows-co...

准备工作

  1. https://github.com/Microsoft/...下载PHP-SDK(在右边的“clone or download”点击,选择下方的“download zip”);
  2. https://windows.php.net/downl...下载PHP7.2的源码,此时最新版本是7.2.8,选择“php-7.2.8-src.zip”下载;
  3. https://visualstudio.microsof...选择“visual studio community 2017”,安装过程中选择C++功能。

编译

  1. 新建编译目录,例如“D:PHP2Compile”;
  2. 将"php-sdk-binary-tools-master.zip"中的文件解压到编译目录下;
  3. 按住shift在编译目录内点击右键,选择“open powershell window here”;
  4. 执行"phpsdk-vc15-x64.bat",成功后提示符从“>”变成"$";
  5. 执行"phpsdk_buildtree phpdev",成功后目录中会多一个“phpdev”目录,命令行的目录自动切换到"phpdev/vc15/x64";
  6. 在"phpdev/vc15/x64"目录下新建php-src文件夹,将PHP源码复制到此目录;
  7. 切换到php-src目录(cd php-src),执行"phpsdk_deps -u";
  8. 在“phpdev/vc15/x64”下建立pecl目录(与PHP源码目录同级),将拓展复制到该目录下;
  9. 在PHP源码目录内执行"buildconf";
  10. 执行“configure --一些选项”命令配置编译选项,例如"configure --disable-all --enable-cli --enable-cgi --enable-zlib --enable-hash --enable-session --without-gd --with-bz2 --enable-yourext";
  11. 执行nmake命令编译PHP及拓展。

编译成功后,在源码的X64目录下会生成“Release”或"Release_TS"目录,编译好的php.exe及生成的拓展dll均在此目录下。dll的文件名为php_xxxx.dll,例如"php_tlanyan.dll"。

TS和NTS

默认编译出来的拓展是TS(线程安全)的版本(位于Release_TS目录中),如果要编译非线程安全版本,configure时加入"--disable-zts"选项。

编译成功后,线程安全版本信息为(php.exe -v输出):


PHP 7.2.8 (cli) (built: Aug 14 2018 10:53:41) ( ZTS MSVC15 (Visual C++ 2017) x64 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

非线程安全版本输出:


PHP 7.2.8 (cli) (built: Aug 14 2018 11:47:40) ( NTS MSVC15 (Visual C++ 2017) x64 ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

注意事项

  1. 原PHP-SDK下载地址https://windows.php.net/downl...只能下载PHP7.1及以前的SDK工具,PHP7.2的工具需从github上下载;
  2. 如果已经之前安装过visual studio,执行"phpsdk-vc15-x64.bat"出现"could not determine 'vc15' directory"的错误提示,表示未安装VC工具,启动安装工具添加VC支持即可;
  3. 编译前可将不需要的拓展删除,加快编译速度;
  4. 如果自定义的拓展出现“cannot open include file 'win95nt.h'”,可使用这个头文件:https://github.com/nonylene/i...

参考

  1. https://wiki.php.net/internal...
  2. http://blog.51cto.com/lancelo...

原文地址:https://segmentfault.com/a/1190000016011547

Windows编译PHP7.2拓展的更多相关文章

  1. php beast windows编译教程

    git clone https://github.com/Microsoft/php-sdk-binary-tools.git c:\php-sdk cd c:\php-sdk git checkou ...

  2. windows下编译php7图形库php_ui.dll

    CSDN博客 具有图形化编程才有意思,这几天看到了php ui 图形扩展,只是现在只能下载php 7.1的 本次教程编译php7.2.6的 php ui 要是linux下编译起来比较简单 但是 win ...

  3. linux和windows下安装python拓展包及requirement.txt安装类库

    python拓展包安装 直接安装拓展包默认路径: Unix(Linux)默认路径:/usr/local/lib/pythonX.Y/site-packagesWindows默认路径:C:\Python ...

  4. TODO:macOS编译PHP7.1

    TODO:macOS编译PHP7.1 本文主要介绍在macOS上编译PHP7.1,有兴趣的朋友可以去尝试一下. 1.下载PHP7.1源码,建议到PHP官网下载纯净到源码包php-7.1.0.tar.g ...

  5. OGRE 2.1 Windows 编译

    版权所有,转载请注明链接 OGRE 2.1 Windows 编译 环境: Windows 7 64Bit Visual Studio 2012 OGRE 2.1 CMake 2.8.12.1 OGRE ...

  6. Windows编译ejabberd

    Windows编译ejabberd(金庆的专栏)安装 erlang OTP. 添加路径到 PATH, 使 erl 可以运行.git clone ejabberd安装 rebar:git clone g ...

  7. 转:Windows下PHP7安装Redis和Redis扩展phpredis

    原文地址:Windows下PHP7安装Redis和Redis扩展phpredis Windows下PHP7安装Redis和Redis扩展phpredis 2016-06-08 17:53:00 标签: ...

  8. vc14(vs2015) 编译php7 记录

    windows 编译php  官方教程  https://wiki.php.net/internals/windows/stepbystepbuild 参考 http://blog.csdn.net/ ...

  9. windows下php7安装redis扩展

    windows下php7安装redis扩展windows下开发用的wamp集成的环境,想装个php-redis扩展.php_redis.dll下载地址:https://pecl.php.net/pac ...

随机推荐

  1. 跨平台C、C++代码注意的事项

    在我们的开发中,跨平台的需求越来越强烈,怎样保持C/C++代码能在多个平台上编译,是一个比較值得研究的问题.关于跨平台的文章网上非常多,跨平台的库网上也非常多.那么我从自己的跨平台开发经验谈一谈自己的 ...

  2. YTU 2795: 编程题AB-侦察员的密码

    2795: 编程题AB-侦察员的密码 时间限制: 1 Sec  内存限制: 128 MB 提交: 155  解决: 43 题目描述 侦察员小甲在被捕前在墙上写了两行文字(ASCII字符),其中包含了他 ...

  3. html5音频视频专题

    html5音频视频专题 总结 1. 操作的就是video和audio两个对象,这两个对象有他们的属性和方法,通过对象的id就可以操作他们 <audio src="../video/琴箫 ...

  4. Faas 典型场景——应用负载有显著的波峰波谷,典型用例-基于事件的数据处理

    Serverless适用的两大场景 场景一:应用负载有显著的波峰波谷 Serverless化与否的评判标准并不是公司规模的大小,而是其业务背后的具体技术问题,比如业务波峰波谷明显,如何实现削峰填谷.一 ...

  5. bzoj1345

    贪心 这并没有想清楚就看题解了... 看上去肯定是贪心,那么怎么贪呢?事实上,我们想一下,假设max(a[i],a[i+1])中a[i]没有合并,那么后面取max肯定是a[i+1],因为如果后面合并之 ...

  6. 设计模式(二):单例模式(DCL及解决办法)

    public class Singleton { //懒汉模式 双重检查锁定DCL(double-checked locking) //缺点:由于jvm存在乱序执行功能,DCL也会出现线程不安全的情况 ...

  7. astgo常见问题(FAQ)知识库

    Q:为什么我在astgo 的一些列表页面看不到右侧顶端的高级功能菜单?R:因为你没有先选择代理商,这些操作都是针对于某个代理商才可以操作的! Q:为什么我无法给astgo 的代理商充值?R:因为你登录 ...

  8. Android开发之Thread类分析 (转载)

    转自:http://blog.csdn.net/llping2011/article/details/9706599 在我们Linux系统中创建线程函数为:pthread_create(),在Andr ...

  9. 自定义滚动条配合鼠标滚轮demo

    <!DOCTYPE html> <html> <head> <title></title> <meta charset="u ...

  10. [Swift通天遁地]七、数据与安全-(2)对XML和HTML文档的快速解析

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...