惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
S
SegmentFault 最新的问题
阮一峰的网络日志
阮一峰的网络日志
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
雷峰网
雷峰网
Apple Machine Learning Research
Apple Machine Learning Research
WordPress大学
WordPress大学
博客园 - 司徒正美
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
宝玉的分享
宝玉的分享
爱范儿
爱范儿
月光博客
月光博客
The GitHub Blog
The GitHub Blog
M
MIT News - Artificial intelligence
H
Hackread – Cybersecurity News, Data Breaches, AI and More
B
Blog
T
Tailwind CSS Blog
美团技术团队
D
Docker
V
Visual Studio Blog
Martin Fowler
Martin Fowler
博客园 - 聂微东
The Cloudflare Blog

zodream梦想开源/个人编程日记

文件解析笔记-zodream梦想开源/个人编程日记 密码本开发笔记之读写与保存-zodream梦想开源/个人编程日记 SkiaSharp 把 pixel byte[] 转成 SKBitmap-zodream梦想开源/个人编程日记 nas 使用 Docker 安装 gogs-zodream梦想开源/个人编程日记 复制 android 手机中的文件到电脑-zodream梦想开源/个人编程日记 周报:寻找优质的周刊-zodream梦想开源/个人编程日记 开发日志:对Markdown的代码块新增引用来源支持-zodream梦想开源/个人编程日记 周报:怎么写技术类的教程文章-zodream梦想开源/个人编程日记 css display:flex 布局尺寸超出问题-zodream梦想开源/个人编程日记 周报:SEO优化的思考-zodream梦想开源/个人编程日记 Edge 浏览器不适用 Edge Image Viewer 打开图片 -zodream梦想开源/个人编程日记 SEO 学习笔记(一) 内容来源-zodream梦想开源/个人编程日记 PHP 实现双因素身份认证(2FA)-zodream梦想开源/个人编程日记 WPF MVVM 获取List 多选数据-zodream梦想开源/个人编程日记 Burp Suite 抓包-zodream梦想开源/个人编程日记 使用 indexnow 注意事项-zodream梦想开源/个人编程日记 Godot 使用字体图标 例如: Iconfont、FontAwesome-zodream梦想开源/个人编程日记 angular 15 对指定页面进行访问限制-zodream梦想开源/个人编程日记 CSS 使用 column-count 实现瀑布流出现内容分割的解决办法-zodream梦想开源/个人编程日记 input 确认按键事件在手机端不生效-zodream梦想开源/个人编程日记 C# 使用socket 进行通讯-zodream梦想开源/个人编程日记 Maui开发中Windows应用开启管理员权限-zodream梦想开源/个人编程日记 Maui 中自定义控件-zodream梦想开源/个人编程日记 angular 14 使用 ng-template 实现tree 结构显示-zodream梦想开源/个人编程日记 c# 动态安装和卸载dll-zodream梦想开源/个人编程日记 慎用 CompositionTarget.Rendering-zodream梦想开源/个人编程日记 c# 重写 c++ 程序笔记:数据初始化-zodream梦想开源/个人编程日记 源码编译 aseprite-zodream梦想开源/个人编程日记 记录一下字符串分隔split各语言之间的不同-zodream梦想开源/个人编程日记 c# Gzip解码无头内容-zodream梦想开源/个人编程日记
VS2019 开发PHP 拓展(一)环境准备-zodream梦想开源/个人编...
zodream · 2020-03-22 · via zodream梦想开源/个人编程日记

VS2019 开发PHP 拓展(一)环境准备

准备工作

  1. 下载 “php-sdk-binary-tools

在右边的“Clone or download”点击,选择下方的“Download ZIP

  1. 下载 “PHP源码

此时最新版本是7.4.4,选择“php-7.4.4-src.zip”下载,

根据 Build your own PHP on Windows

Visual C++ 14.0 (Visual Studio 2015) for PHP 7.0 or PHP 7.1.
Visual C++ 15.0 (Visual Studio 2017) for PHP 7.2, PHP 7.3 or PHP 7.4.
Visual C++ 16.0 (Visual Studio 2019) for master.

即 vs2019 只能编译 php-src 的 master 分支,所以需要下载 master 分支源码,在右边的“Clone or download”点击,选择下方的“Download ZIP

  1. 下载 “Visual Studio 2019

选择 “社区” 下的 “免费下载” 进行下载,

  1. php-sdk-binary-tools-master.zip 解压到 D:\zodream\php-sdk-binary-tools

  2. 按住shift在编译目录内点击右键,选择“在此处打开Powershell窗口”;

  3. 执行”.\phpsdk-vs16-x64.bat”,成功后提示符从“>”变成“$”;

  4. 执行“phpsdk_buildtree phpdev”,成功后目录中会多一个“phpdev”目录,命令行的目录自动切换到“phpdev/vc16/x64”;

  5. 在“phpdev/vc16/x64”目录下新建php-src文件夹,将PHP源码复制到此目录;

  6. 切换到php-src目录(cd php-src),执行“phpsdk_deps -u”;

  7. 在“phpdev/vc16/x64”下建立pecl目录(与PHP源码目录同级),此目录放拓展的源码。如果为自己开发的拓展,请参考【下一章】。

编译流程

  1. 将拓展源码复制到该目录下(D:\zodream\php-sdk-binary-toolsphpdev\vc16\x64\pecl);

如果为自己开发的拓展,则不需要这一步,下一步会自动发现这些拓展,直接配置编译选项则可以

  1. 在PHP源码目录内(D:\zodream\php-sdk-binary-tools\phpdev\vs16\x64\php-src)执行”buildconf”;
  2. configure --help 查看能够使用的配置选项,包括你自己的插件什么的
  3. 执行“configure –一些选项”命令配置编译选项,例如”configure –-disable-all –-enable-cli –-enable-cgi –-enable-zlib –-enable-session –-without-gd -–with-bz2 –-enable-yourext”;

编译 php

configure --disable-all --enable-cli --enable-$remains

1

我的编译php 参数

configure --disable-all --enable-cli --with-mysqlnd -–enable-cgi –-enable-zlib –-enable-session --with-bz2 --with-mysqli --enable-pdo --with-pdo-mysql --enable-redis --enable-zodream --enable-fileinfo --with-curl --with-gettext --enable-mbstring --with-openssl --with-imagick --with-pthreads

1

编译 PECL 拓展, 例如: apcu

configure --disable-all --enable-cli --enable-apcu

12

  1. 执行nmake命令编译PHP及拓展,
  2. 如果希望压缩生成的 PHP 生成和扩展,则"nmake"之后也会运行:nmake snap
  3. 完成一些更改后重新编译, 清理旧的编译二进制文件 nmake clean, 如果需要更新"configure"脚本 buildconf --force, 然后重复编译 3、 4 步

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

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

转载请保留原文链接: https://zodream.cn/blog/id/101.html