• 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. Linux基础篇,系统服务(service)的管理

    一.服务是什么? 用白话文说,服务就是"常驻在内存中的进程",用来提供一些系统或网络功能. 二.service和daemon的区别与联系 因为服务(service)本质上来说也是程 ...

  2. alg-最长回文字符串

    class Solution { public: std::string longestPalindrome(const std::string& s) { if (s.empty()) { ...

  3. 一个有关 scala 编程语言 的博客

    http://www.cnblogs.com/superjt/category/312683.html

  4. HTTP 405 的错误提示:消息 JSP 只允许 GET、POST 或 HEAD。Jasper 还允许 OPTIONS 的解决方法

    如果项目是运行在 Tomcat 8 及以上,会发现发出的 PUT 请求和 DELETE 请求可以被控制其接收到,但是返回页面时(forward)会报HTTP 405 的错误提示:"消息 JS ...

  5. Starlims Client Request Portal 客户申请门户

    用户可以直接在starlims对外的"客户申请门户"上发起检验申请,并追踪检验进度等. 工作流程图示如下:

  6. MyEclipse 10安装SVN插件subclipse

    1. 下载SVN插件subclipse 下载地址:http://subclipse.tigris.org/servlets/ProjectDocumentList?expandFolder=2240& ...

  7. 常用Linux命令的基本使用

    01.常用Linux命令的基本使用 序号 命令 对应英文 作用 01 ls list 查看当前文件夹下的内容 02 pwd print work directory 查看当前所在文件夹 03 cd [ ...

  8. Python导出数据到Excel表格-NotImplementedError: formatting_info=True not yet implemented

    在使用Python写入数据到Excel表格中时出现报错信息记录:“NotImplementedError: formatting_info=True not yet implemented” 报错分析 ...

  9. stand up meeting 11/26/2015

    part 组员 今日工作 工作耗时/h 明日计划 工作耗时/h UI 冯晓云  完成UI简易界面布局设计:在UI部分实现释义数据格式转换的实现和测试,使得其与外界接口均标准化为string,具体实现见 ...

  10. Kaggle入门——泰坦尼克号生还者预测

    前言 这个是Kaggle比赛中泰坦尼克号生存率的分析.强烈建议在做这个比赛的时候,再看一遍电源<泰坦尼克号>,可能会给你一些启发,比如妇女儿童先上船等.所以是否获救其实并非随机,而是基于一 ...