location_on 首页 keyboard_arrow_right 科技 keyboard_arrow_right 正文

Windows下编译PHP扩展,这3步你得先搞定

科技 access_alarms2026-07-15 visibility2 text_decrease title text_increase

在windows下编译php扩展

查看官方文档

在你开始之前

Windows上构建PHP前需要做三件事

编译器 要求

PHP支持使用Microsoft的Visual C ++编译器进行构建。不支持MinGW和Cygwin。

ICC和clang可以用于实验目的。但是请注意,只有使用Visual C ++才能保证生产质量的二进制文件。

完全支持免费使用的Community VC ++版本,并且可以使用它们。

有关更多信息以及如何获取编译器,请参阅受支持的版本。支持以下VC ++版本:

支持特定的Visual Studio版本意味着仅支持其默认平台工具集。使用非默认平台工具集(例如Visual Studio 2019中的14.16)构建PHP可能有效,但不建议这样做。

Visual C文件名(和PHP_SDK_VS环境变量;请参见下文)中,通常缩写为Visual Studio版本。

在Visual Studio 2019之前,缩写使用方案“ vc#”(例如“ vc14”)。该数字(“#”)是各个平台工具集的主要数字。

Visual Studio 2017的预览版本随平台工具集15.00一起提供,因此使用了“ vc15”。

但是,Visual Studio 2017的第一个GA版本附带了平台工具集14.10(以表示向后兼容性),但内部Visual Studio版本号保持为15.00。

为了避免混淆,保留了“ vc15”。对于Visual Studio 2019内部版本(主版本),“ vc#”最终已更改为“ vs#”(请注意“ s”),该数字现在指定主要的内部Visual Studio版本号。

设置

如果编译PHP 7.0+:

如果编译PHP 7.2+:

如果是master:

可选工具

命令提示符

PHP SDK 2.0.0+提供了启动脚本,这些脚本可以自动设置编译器环境。入门脚本还提供了注入定制设置的功能。要创建自定义的安装脚本,请将您的代码放入phpsdk-local.bat PHP SDK根目录中的文件中。以下变量在PHP SDK Shell中自动可用

每个版本的Visual Studio(或Windows SDK)都提供了一个用于编译的命令提示符环境(可从“开始”菜单启动)。例如,如果您要省略启动脚本用法或要测试Visual Studio的预发行版本,则可以使用它。

下载要求 获取PHP源代码,有两种选择: 获取二进制工具: 获取PHP依赖的库: 设置构建目录

在构建PHP之前,该操作只能执行一次。此处使用的参考二进制SDK目录为c:\php-sdk,可以根据具体情况使用任意位置。因此,我们将该路径C:\php-sdk\phpdev\vc14\x64\php-7.1.0-src用作PHP 7.1.0的Visual C ++ 64位版本的参考路径。

设置PHP SDK 打开命令提示符并输入构建目录:

cd c:\php-sdk

运行启动程序脚本(例如,对于Visual Studio 2015 64位版本),运行phpsdk-vc14-x64.bat运行phpsdk_buildtree批处理脚本,将会创建构建所需的目录结构:

phpsdk_buildtree phpdev

该phpsdk_buildtree脚本将根据当前使用的VC ++版本创建路径,并切换到新创建的目录将PHP源代码提取到,其中:C:\php-sdk\phpdev\vX##\x## 在提取PHP源代码的同一目录中,有一个deps目录。请执行以下任一操作 编译

请注意,PHP SDK脚本当前不支持任何交叉构建。

运行启动程序脚本自动为所需的构建配置设置好环境

c:\php-sdk\phpsdk-vc14-x64.bat

将目录切换到您的PHP源代码的位置,例如

cd C:\php-sdk\phpdev\vc14\x64\php-7.1.0-src

运行

buildconf

查看编译帮助概述:

configure --help

创建您的configure :

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

编译php 运行

nmake

如果要把PHP构建和扩展打包到压缩包中,请在’nmake’之后运行:

nmake snap

编译后的PHP现在位于“C:\php-sdk\phpdev\vX##\x##\php-source-directory\Release_TS”下。如果您运行“ nmake snap”,则zip文件也将位于此处。如果使用“ –disable-zts”进行编译,则已编译的PHP将位于“C:\php-sdk\phpdev\vX##\x##\php-source-directory\Release”下。可以通过configure --enable-object-out-dir 参数可以设置编译php的位置。 更改后重新编译 清理旧的已编译二进制文件

nmake clean

如果您需要更新“配置”脚本

buildconf --force

创建您的makefile:请参见发布

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

编译

nmake

构建PECL扩展

许多PECL扩展已经具有预构建的DLL,可以从PECL网站上的扩展页面下载这些DLL。例如,在APCu扩展页面上,发行档案链接旁边有* DLL *链接。他们将您带到一个页面,您可以在其中下载所需的PHP版本和体系结构的已编译扩展。

要构建PECL扩展(例如APCu):

在PECL(APCu)上打开扩展的页面通过以下方式下载扩展源: 创建一个pecl与您的PHP源目录相同级别的目录,例如C:\php-sdk\phpdev\vc14\x64\pecl将扩展源代码提取或克隆到pecl目录 输入您的PHP源目录通过运行以下命令来重建配置脚本:

buildconf

configure –help现在执行应包含启用APCu的选项

--enable-apcu Whether to enable APCu support

配置和构建:

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

使用php -m命令测试二进制文件,以确保已加载APCu。此时,已编译的扩展名将位于发行目录中。 陷阱

对于可能的PHP SDK问题,请查阅PHP SDK自述文件

从PHP 7.3开始,可以使用–enable-native-intrinsics开关。

然后,生成的二进制文件将需要具有相应功能集的处理器。

例如,如果设置–enable-native-intrinsics =avx2,请确保目标计算机具有支持AVX2的处理器。

教程至此结束,下面是我的安装过程。

官方下载Visul Studio

在这里插入图片描述

下载php源码 环境准备

执行下面命令

phpsdk-vc15-x64.bat

output

[vcvarsall.bat] Environment initialized for: 'x64'
PHP SDK 2.2.1-dev
OS architecture:    64-bit
Build architecture: 64-bit
Visual C++:         14.23.28106.4
PHP-SDK path:       C:\Users\xxx\Downloads\PHP2Compile\php-sdk-binary-tools-master

在php-sdk-binary-tools 会生成出phpdev、phpdev\vs16\x64。把下载好的php源码放在些目录中。

运行下面命令,php 会自动下载 需要的依赖包 (php7 以前需要手动下载 php-dsp 文件)

phpsdk_deps -u

output

Configuration: 7.3-vc15-x64-stable

Processing package ICU-64.2-vc15-x64.zip
Processing package apache-2.4.28-vc15-x64.zip
Processing package c-client-2007f-vc15-x64.zip
...

开始编译

切换到php源码目录

buildconf

output

Rebuilding configure.js
Now run 'configure --help'

编译php

configure --disable-all  --enable-cli

output

PHP Version: 7.3.11
Saving configure options to config.nice.bat
Checking for cl.exe ...  <in default path>
WARNING: Using unknown MSVC version 19.23.28106.4
....
....
| Build type        | Release                      |
| Thread Safety     | Yes                          |
| Compiler          | MSVC 19.23.28106.4, untested |
| Architecture      | x64                          |
| Optimization      | PGO disabled                 |
| Native intrinsics | SSE2                         |
## | Static analyzer   | disabled                     |
Type 'nmake' to build PHP

执行完这一步会在main目录下生成config.w32.h文件,编译php扩展会用到这个文件。

运行

nmake

执行这下步会有些慢先去喝口水,休息下。

编译好的php在 php-sdk-binary-tools-master\phpdev\vs16\x64\php-7.3.11-src\x64\Release_TS 目录

运行

php -i

能执行说明成功了

编译扩展

下载扩展 arraylist

buildconf
configure --disable-all --enable-cli --enable-yaf=shared
nmake

–enable-cli-xxx=shared 表示动态链接库,会生成单独的dll文件。否则会编译到php中。

这就编译完了

浦发信用卡中心系统维护通知:5月30日部分功能暂停,额度查询受影响
« 上一篇 2026-07-15
火影世界火遁流技能怎么学?木叶传承忍术实战攻略
下一篇 » 2026-07-15