PHP - windows下编译PHP 7.2的memcache
admin
2023-06-15 03:21:53
0

概述

PHP 7.2出来有一段时间了,不出意料,memcache又不能用了,于是又想到要自己动手编译,不过与我编译PHP 7.1的memcache的时候相比,有个好消息是已经有人把PHP 7.1和7.2 的memcache都编译好并放在github上了,需要的可直接去那里下载,我这篇文章就不提供下载了:
https://github.com/nono303/PHP7-memcache-dll

注:这里还是要强烈吐槽一下百度,以“php 7.2 memcache”为关键字,完全搜索不到任何有用的东西,上面那个网址我是用google一下子就搜到了,而且还受到启发,顺利的把编译过程给搞定,所以搞开发的遇到技术问题,还是不要在百度上浪费生命了。

我下面还是把我研究出来的PHP 7.2 memcache的编译方法写出来,给有需要的人做个参考吧。

PHP 7.2的memcache编译方法跟之前版本有了一些变化,主要体现在:

  1. PHP SDK的下载路径与编译方式发生了改变;
  2. PHP 7.2的memcache要使用VC15编译;

下载文件

编译前需要下载如下文件:

  1. 编译环境:
    PHP-memcached是用VC15编译的,因为并不常用VC15,所以到微软的官网上下载visual studio 2017 entrpise的试用版即可。
    地址:
    https://www.visualstudio.com/zh-hans/?rr=https%3A%2F%2Fwww.microsoft.com%2Fzh-cn%2F
  2. PHP源代码:
    从PHP官网上下载源代码,地址:
    http://windows.php.net/downloads/releases/php-7.2.0-src.zip
  3. 下载PHP-SDK文件:
    原来的网址里,已经没有PHP 7.2的SDK包下载,根据其页面上的Readme.txt的说明,要到如下地址去下载:
    https://github.com/Microsoft/php-sdk-binary-tools
  4. 下载memcache扩展包的源码,这个地址也换了,如下:
    https://github.com/websupport-sk/pecl-memcache/tree/NON_BLOCKING_IO_php7

准备PHP代码

注意:编译前需先安装好vs2017。

  1. 新建一个编译目录,如PHP72Compile;
  2. 将从https://github.com/Microsoft/php-sdk-binary-tools 下载的包解压到这个目录,目录结构如下:
    PHP - windows下编译PHP 7.2的memcache
  3. 打开cmd窗口,进入到PHP72Compile目录;
  4. 执行phpsdk-vc15-x64.bat,结果如下图:
    PHP - windows下编译PHP 7.2的memcache
  5. 再运行:phpsdk_buildtree phpdev,结果如下图:
    PHP - windows下编译PHP 7.2的memcache
  6. 在此路径下建立php-src目录,并将下载的PHP源码拷贝到这个目录,最终目录结构如下:
    PHP - windows下编译PHP 7.2的memcache
  7. 在命令行进入到php-src目录,结果如下图:
    PHP - windows下编译PHP 7.2的memcache
  8. 执行命令:phpsdk_deps --update --branch master,用来获取SDK的依赖包,输出信息如下:
D:\PHP72Compile\phpdev\vc15\x64\php-src
$ phpsdk_deps --update --branch master

Configuration: master-vc15-x64-staging

Processing package ICU-60.1-1-vc15-x64.zip
Processing package apache-2.4.28-vc15-x64.zip
Processing package c-client-2007f-vc15-x64.zip
Processing package fbclient-3.0-nocrt-x64.zip
Processing package freetype-2.8.0-1-vc15-x64.zip
Processing package glib-2.53.3-vc15-x64.zip
Processing package libargon2-20161029-vc15-x64.zip
Processing package libbzip2-1.0.6-vc15-x64.zip
Processing package libcurl-7.56.0-2-vc15-x64.zip
Processing package libenchant-1.6.0-vc15-x64.zip
Processing package libffi-3.2.1-vc15-x64.zip
Processing package libiconv-1.15-1-vc15-x64.zip
Processing package libintl-0.18.3-1-vc15-x64.zip
Processing package libjpeg-9b-vc15-x64.zip
Processing package liblmdb-0.9.21-vc15-x64.zip
Processing package libpng-1.6.34-vc15-x64.zip
Processing package libpq-9.6.5-vc15-x64.zip
Processing package libqdbm-1.8.78-vc15-x64.zip
Processing package libsasl-2.1.27-vc15-x64.zip
Processing package libssh3-1.8.0-vc15-x64.zip
Processing package libtidy-5.4.0-vc15-x64.zip
Processing package libwebp-0.6.0-vc15-x64.zip
Processing package libxml2-2.9.5-vc15-x64.zip
Processing package libxpm-3.5.12-1-vc15-x64.zip
Processing package libxslt-1.1.30-vc15-x64.zip
Processing package libzip-1.3.0-v15-x64.zip
Processing package mpir-3.0.0-vc15-x64.zip
Processing package net-snmp-5.7.3-vc15-x64.zip
Processing package nghttp2-1.24.0-vc15-x64.zip
Processing package openldap-2.4.45-vc15-x64.zip
Processing package openssl-1.1.0g-vc15-x64.zip
Processing package wineditline-2.202-vc15-x64.zip
Processing package zlib-1.2.11-vc15-x64.zip
Processing package libsodium-1.0.15-vc15-x64.zip
Updates performed successfully.
Old dependencies backed up into 'D:\PHP72Compile\phpdev\vc15\x64\deps.201712260650'.

D:\PHP72Compile\phpdev\vc15\x64\php-src
$

准备PHP memcache代码

  1. 在与php-src同级的目录下建立pecl\memcache目录,并将下载的php-memcache代码放到这个目录下,效果如下图:
    PHP - windows下编译PHP 7.2的memcache
  2. 执行buildconf命令,效果如下图:
    PHP - windows下编译PHP 7.2的memcache
  3. 执行命令:
configure --disable-all --enable-cli --enable-zlib --enable-hash --enable-session --without-gd --with-bz2 --enable-memcache=shared --enable-fd-setsize=2048 --enable-sanitizer

输出信息如下:

D:\PHP72Compile\phpdev\vc15\x64\php-src
$ configure --disable-all --enable-cli --enable-zlib --enable-hash --enable-session --without-gd --with-bz2 --enable-memcache=shared --enable-fd-setsize=2048 --enable-sanitizer
PHP Version: 7.2.0

Saving configure options to config.nice.bat
Checking for cl.exe ...  
WARNING: Using unknown MSVC version 19.12.25831

  Detected compiler MSVC 19.12.25831, untested
  Detected 64-bit compiler
Checking for link.exe ...  C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.12.25827\bin\HostX64\x64
Checking for nmake.exe ...  
Checking for lib.exe ...  
Checking for bison.exe ...  
Checking for sed.exe ...  
Checking for re2c.exe ...  
  Detected re2c version 1.0.2
Checking for zip.exe ...  
Checking for lemon.exe ...  
Checking for mc.exe ...  C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64
Checking for mt.exe ...  C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64
Enabling multi process build

Build dir: D:\PHP72Compile\phpdev\vc15\x64\php-src\x64\Release_TS
PHP Core:  php7ts.dll and php7ts.lib

Checking for wspiapi.h ...  
Enabling IPv6 support
Enabling SAPI sapi\cli
Checking for library edit_a.lib;edit.lib ... ..\deps\lib\edit_a.lib
Checking for editline/readline.h ...  D:\PHP72Compile\phpdev\vc15\x64\deps\include
Checking for library libbz2_a.lib;libbz2.lib ... ..\deps\lib\libbz2_a.lib
Checking for bzlib.h ...  D:\PHP72Compile\phpdev\vc15\x64\deps\include
Enabling extension ext\bz2
Enabling extension ext\date
Checking for KeccakHash.h ...  ext/hash/sha3/generic64lc
Enabling extension ext\hash
Enabling extension ext\pcre
Enabling extension ext\reflection
Enabling extension ext\session
Enabling extension ext\spl
Checking for timelib_config.h ...  ext/date/lib
Enabling extension ext\standard
Checking for library zlib_a.lib;zlib.lib ... ..\deps\lib\zlib_a.lib
Checking for zlib.h ...  D:\PHP72Compile\phpdev\vc15\x64\deps\include
Enabling extension ext\zlib
Enabling extension ..\pecl\memcache\php7 [shared]

Creating build dirs...
Generating files...
Generating Makefile
Generating main/internal_functions.c
Generating main/config.w32.h
Generating phpize
Done.

Enabled extensions:
-----------------------
| Extension  | Mode   |
-----------------------
| bz2        | static |
| date       | static |
| hash       | static |
| memcache   | shared |
| pcre       | static |
| reflection | static |
| session    | static |
| spl        | static |
| standard   | static |
| zlib       | static |
-----------------------

Enabled SAPI:
-------------
| Sapi Name |
-------------
| cli       |
-------------

------------------------------------------------
|                 |                            |
------------------------------------------------
| Build type      | Release                    |
| Thread Safety   | Yes                        |
| Compiler        | MSVC 19.12.25831, untested |
| Architecture    | x64                        |
| Optimization    | PGO disabled               |
| Static analyzer | disabled                   |
------------------------------------------------

Type 'nmake' to build PHP

D:\PHP72Compile\phpdev\vc15\x64\php-src
$

编译与查看

  1. 执行nmake开始编译,,等待几分钟或十几分钟,中间会报若干警告,不用理会;
  2. 编译完成后,在“D:\PHP72Compile\phpdev\vc15\x64\php-src\x64\Release_TS\”目录下可找到php_memcache.dll。

相关内容

热门资讯

德国华人连环迷奸案,“体面人”... 当地时间5月20日上午,柏林地方法院一楼门外,自发前来旁听的人们沿着狭窄的旋转楼梯,一路排到了三楼。...
塞尔维亚总统武契奇访问清华大学 5月26日上午,塞尔维亚总统阿莱克桑达尔·武契奇(H.E.Aleksandar Vučić)访问清华...
“假煽情”还是“真必要”?家长... 临近毕业季,全国不少高中都在为高三学生举办成人礼。身穿礼服、挽着父母的手臂走过“成人门”、互换感恩信...
原创 走... 地球知识局 文字 | 林间草木声 校对 | 朝乾 编辑 | Alicia 5月2号,拥有上百架飞机的...
ChatGPT为什么敢胡编?深... 我以第一人称写下这些文字,并非因为我是人类,恰恰相反——我是一个AI。准确地说,我是某个大型语言模型...
斩获低空经济优秀示范项目奖|九... 近日,九洲集团旗下产业公司九洲空管凭借标杆性产业项目与低空领域核心技术优势,成功斩获2026UASE...
原创 玻... 在现代工业暖通空调系统中,柔性风管在气流控制、空间优化和系统连接方面发挥着至关重要的作用。在各种柔性...
惠州全链协同打造人工智能和机器... 千台机器人有望在年内产线“上岗”、无人物流车进行商业化前期测试、具身智能机器人实现量产……当前,人工...
小米发布2026年Q1财报:总... 【太平洋科技快讯】小米刚刚发布2026年第一季度财报,当季实现总营收991亿元,经调整净利润61亿元...
美重启海外钨矿资源,“西方要想... 【文/观察者网 张菁娟】随着美以联合对伊朗发动军事行动,中东战事的持续,高强度战争对战略物资的海量消...