• 如果喜欢本站,您可以按CTRL+D收藏本站,方便下次访问。

  • 欢迎来自五湖四海的朋友,期待为您分享有价值的资源 :oops:

Windows系统编译PHP7扩展

技术分享 第四度 3周前 (10-29) 170次浏览 0个评论 扫描二维码
文章目录[隐藏]

前言

有时候,我们要在windows系统安装一个定制的php扩展,或者PECL官网没有提供windows版编译好的DLL扩展文件,我们就需要自己从源码编译DLL扩展文件。
PHP扩展(Extension)的编译在linux系统编译比较容易一些,但是在windows系统步骤就比较多,本文根据官网文档,以编译php7.3下64位的apcu扩展为例,介绍编译PHP7扩展的步骤。

准备工作

为编译php7扩展,需要准备以下工具和源码:

  1. Visual Studio。如果要编译php7.0或者php7.1扩展,需要安装VS2015;如果需要编译php7.2+扩展需要安装VS2017。
  2. php-sdk-binary-tools。在GitHub下载,选2.20稳定版本。
  3. php稳定版源码。在这里我们选php7.3.23的源码。
  4. 扩展源文件。本文以APCU为例,下载5.1版本
  5. 依赖文件。由于仅仅编译扩展一般不需要编译依赖,此处略过。

在这里要注意的是,如果想要DLL扩展能够复制到已经装好的PHP环境中使用,必须要保证扩展和PHP主运行文件

  • 编译器一致(VS2015/VS2017)
  • 位数一致(32位/64位)
  • 是否线程安全一致(TS/NTS)

Windows系统下64位非线程安全是常用的版本,也是接下来本文要编译的目标。

组织目录

  1. 解压php-sdk-binary-tools,本文解压到G:\php-sdk文件夹
  2. 打开cmd命令行窗口,执行以下命令以初始化相关环境变量,这里我们需要用vs2017生成64位的目标文件
    G:
    cd php-sdk
    G:\php-sdk\phpsdk-vc15-x64.bat
  3. 创建的目录结构,这时候会在php-sdk文件夹下创建phpdev\vc15\x64文件夹,并进入相应文件夹
    phpsdk_buildtree phpdev
  4. 把php7.3源码解压到phpdev\vc15\x64文件夹下,把apcu源码解压到phpdev\vc15\x64\pecl文件夹下。这时候php-sdk目录结构如下所示
    │─bin
    ├─doc
    ├─lib
    ├─msys2
    ├─pgo
    └─phpdev
    └─vc15
        └─x64
            ├─deps
            ├─pecl
            │  └─apcu
            └─php-7.3.23-src

编译扩展

  1. 执行以下命令生成配置文件configure.js
    buildconf
  2. 执行以下命令编译php-cli和apcu扩展,
    configure --disable-all --disable-zts --enable-cli --enable-apcu=shared

    命令的含义是编译生成非线程安全(nts)版本的php-cli和php扩展动态库apcu,禁止编译其它模块和扩展,--disable-zts表示生成非线程安全版本的目标文件。要查看所有可能的命令参数,请执行configure --help

  3. 最后执行编译命令
    nmake

    根据机器配置不同,大概等待3-5分钟,可以在G:\php-sdk\phpdev\vc15\x64\php-7.3.23-src\x64\Release看到生成的扩展文件php_apcu.dll

7

测试验证

把php_apcu文件复制到系统原有的php文件夹下的ext文件夹,并在php.ini启用扩展,执行php -m,可以看到apcu扩展已经启用

参考文章


本网站采用BY-NC-SA 4.0协议进行授权 | 转载请注明原文链接:https://www.disidu.com/post/2002.html
如果觉得本文对您有帮助或者您心情好~可以微信打赏支持一下本站:↓↓↓
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址