• git clone https://github.com/Microsoft/php-sdk-binary-tools.git c:\php-sdk
  • cd c:\php-sdk
  • git checkout php-sdk-2.1.9 or later
  • invoke phpsdk-vc15-x64.bat
  • phpsdk_buildtree phpmaster
  • git clone https://github.com/php/php-src.git && cd php-src, or fetch a zipball
  • phpsdk_deps --update --branch master, use phpsdk_deps --update --branch X.Y for a non master branch
  • do the build, eg. buildconf && configure --enable-cli && nmake

Windows编译PHP拓展

1.离线下载并安装Build Tools(对应Visual Studio 2017)

下载连接:vs_buildtools.exe
离线下载脚本:

vs_buildtools.exe --layout E:\VS2017BuildTools --add Microsoft.VisualStudio.Workload.VCTools --lang zh-CN

2. 下载,解压PHP-SDK工具包

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

3. PHP-SDK配置,加载

# 命令行进入解压路径,按自己需求执行对应的批处理脚本
>phpsdk-vc15-x64.bat
$> phpsdk_buildtree phpdev

4. 下载PHP-SDK编译依赖组件

$> phpsdk_deps -u
# 或手工下载([依赖下载链接](https://windows.php.net/downloads/php-sdk/deps))并解压至deps目录
# 下载目录对应当前上级目录文件名

5. 下载,复制PHP源码,下载,复制扩展源码。

  • 可在当前目录下载,解压多个PHP版本的源码。
  • vc## 编译工具版本(eq vc15),x## CPU版本 (x86 or x64)
  • 解压复制PHP源码至phpdev\vc##\x##\php-7.3.7-src
  • 解压复制扩展源码至phpdev\vc##\x##\php-7.3.7-src\ext或phpdev\vc##\x##\pecl
  • beast扩展需要复制win95nt.hphp-7.3.7-src\main目录。(此文件建议下载一个PHP7.1x的源码,在main目录。)

务必修改beast源码文件config.w32,替换为如下内容。源码有错误,作者后期新加的代码漏了execute-normal-script配置信息:

// $Id$
// vim:ft=javascript // If your extension references something external
ARG_WITH("beast", "for beast support", "yes,shared"); ARG_ENABLE("beast", "enable beast support", "yes,shared"); ARG_ENABLE("beast-debug", "enable beast debug mode", "no"); ARG_ENABLE("execute-normal-script", "Enable execute normal PHP script", "yes"); if (PHP_BEAST != "no") {
if (PHP_BEAST_DEBUG != "no") {
AC_DEFINE('BEAST_DEBUG_MODE', 1, 'Debug support in beast');
}
if (PHP_EXECUTE_NORMAL_SCRIPT != "no") {
AC_DEFINE('BEAST_EXECUTE_NORMAL_SCRIPT', 1, [ ]);
} EXTENSION("beast", "beast.c aes_algo_handler.c des_algo_handler.c base64_algo_handler.c beast_mm.c spinlock.c cache.c beast_log.c global_algo_modules.c header.c networkcards.c tmpfile_file_handler.c file_handler_switch.c shm.c", true);
}

6. 编译扩展

$>cd php-7.3.7-src
$>buildconf
$>configure --help #查找编译扩展关键字,确定配置参数
# 线程安全编译
$>configure --disable-all --enable-cli --without-beast --enable-execute-normal-script=yes --disable-beast=shared && nmake
# 非线程安全编译
$>configure --disable-zts --disable-all --enable-cli --without-beast --enable-execute-normal-script=yes --disable-beast=shared && nmake

重新编译脚本

# Recompile after you have done some changes
1. Clean up old compiled binaries
nmake clean
2. If you need to update the 'configure' script
buildconf --force
3. Create your makefile: see release
configure --disable-all --enable-cli --enable-$remains
4. Compile
nmake

引用资源

  1. 在windows10下php7.3+编译phalcon扩展 https://www.jianshu.com/p/9dca99f7d4a9
  2. Windows编译PHP7.2拓展 https://segmentfault.com/a/1190000016011547
  3. https://wiki.php.net/internals/windows/stepbystepbuild_sdk_2
 
 

jenawant commented on 4 Dec 2019

你直接在vs里面编译就好了

你好,请教一下,目前PHP用的版本是5.6,应该如何生成dll呢?试了好多网上的方案,都不行,还请指导一下 ,谢谢。

 
 

Refactoring commented on 4 Dec 2019

@jenawant
5.6我这也没有成功,放弃5.6了。我编译环境太多,最后再没折腾。
服务器自己有权折腾,就升级吧,同样的代码7.x性能好的不得了(开启opcache)。

 
 

jenawant commented on 5 Dec 2019 •

edited 

@Refactoring

感谢回复,基于你的方案,然后参考PHP官方文档,在5.6.40下编译成功了,谢谢。
接受你的建议,接下来,要搞PHP7的版本。

引用资源:http://ishere.cn/2019/12/05/windows10-compile-php-extension.html

php beast windows编译教程的更多相关文章

  1. DevExpress Components16.2.6 Source Code 重编译教程

    DevExpress 是一个比较有名的界面控件套件,提供了一系列优秀的界面控件.这篇文章将展示如何在拥有源代码的情况下,对 DevExpress 的程序集进行重新编译. 特别提示:重编译后,已安装好的 ...

  2. gRPC编译教程

    windows平台的编译 一.编译openssl ① 安装perl(可以使用ActivePerl),执行perl Configure VC-WIN64A no-asm .在这里解释一下参数含义,VC- ...

  3. CM12同步源码及编译教程

    同时提供基于安卓5.0的MKL魔趣猪扒饭编译教程~[玩机组出品]魔趣猪扒饭MKL50.1编译教程http://www.oneplusbbs.com/forum.php?mod=viewthread&a ...

  4. OGRE 2.1 Windows 编译

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

  5. Android反编译教程

    本文摘自 http://blog.csdn.net/ithomer/article/details/6727581 本文Android反编译教程,测试环境: Win7 Ultimate x64 Ubu ...

  6. Windows编译ejabberd

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

  7. Windows API教程文件系统

    本篇文章主要介绍了"Windows API教程文件系统",主要涉及到Windows API教程文件系统方面的内容,对于Windows API教程文件系统感兴趣的同学可以参考一下. ...

  8. MySQL 8.0.12 基于Windows 安装教程(超级详细)

    MySQL 8.0.12 基于Windows 安装教程(超级详细) (一步一步来,装不了你找我!) 本教程仅适用Windows系统,如果你原本装了没装上,一定要先删除原本的数据库,执行:mysqld ...

  9. 【转载】OGRE 2.1 Windows 编译

    OGRE 2.1 Windows 编译 环境: Windows 7 64Bit Visual Studio 2012 OGRE 2.1 CMake 2.8.12.1 OGRE: OGRE官方推出了最新 ...

随机推荐

  1. dotnet CLI工具是如何运行你的代码的

    原文连接:https://mattwarren.org/2016/07/04/How-the-dotnet-CLI-tooling-runs-your-code/作者 Matt Warren.授权翻译 ...

  2. ThinkPHP5中raw的作用

    在tp5中,我们一般在模板中输出变量是这样的:{$test} 但是有时候在有些源码中我们可以看到这样的方式:{$test|raw} 这个时候如果你去找手册会发现,全文基本没有提到这个raw的作用. 那 ...

  3. Python爬虫 ---scrapy框架初探及实战

    目录 Scrapy框架安装 操作环境介绍 安装scrapy框架(linux系统下) 检测安装是否成功 Scrapy框架爬取原理 Scrapy框架的主体结构分为五个部分: 它还有两个可以自定义下载功能的 ...

  4. JVM崩溃的原因及解决!

    JVM崩溃的原因及解决! 前些天,搞JNI的时候,报了个JVM崩溃的错.错误信息如下: # # An unexpected error has been detected by HotSpot Vir ...

  5. Redis学习一:Redis两种持久化机制

    申明 本文章首发自本人公众号:壹枝花算不算浪漫,如若转载请标明来源! 感兴趣的小伙伴可关注个人公众号:壹枝花算不算浪漫 22.jpg 前言 Redis是基于内存来实现的NO SQL数据库,但是我么你都 ...

  6. Fiddler 内置命令与断点

    Fiddler还有一个藏的很深的命令框,就是眼前,我用了几年的Fiddler都没有发现它,偶尔在别人的文章发现还有这个小功能,还蛮好用的,整理下记录在这里. FIddler断点功能就是将请求截获下来, ...

  7. xshell使用记录

    1.rz---上传文件 2.ls----列出文件 3.chmod +x webbench_pro  -----赋予执行权限 4../webbench_pro----当前目录执行程序

  8. termux上安装lxml失败

    想试试在手机上随时可以接收到各个平台上最新的消息,于是打算在qpython上写个python的爬虫,安装bs4后,在安装lxml时出现了问题. qpython失败后,改用termux试一下,结果出现了 ...

  9. 疲劳驾驶打瞌睡?python保障您的驾驶安全

    道路千万条,安全第一条!疲劳驾驶可谓交通事故几大罪魁祸首之一,根据美国一项研究显示,司机睡眠不足4小时,交通事故肇事几率等同于醉驾. 为了减少疲劳驾驶现象,驾驶员疲劳检测应运而生.这是一项安全技术,可 ...

  10. C - Long Beautiful Integer codeforces 1269C 构造

    题解: 这里的m一定是等于n的,n为数最大为n个9,这n个9一定满足条件,根据题目意思,前k个一定是和原序列前k个相等,因此如果说我们构造出来的大于等于原序列,直接输出就可以了,否则,由于后m-k个一 ...