温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

PHP - windows下编译PHP 7.2的memcache

发布时间:2020-06-16 19:16:30 来源:网络 阅读:12920 作者:tywali 栏目:web开发

概述

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 ... <in default path> 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 ... <in default path> Checking for lib.exe ... <in default path> Checking for bison.exe ... <in default path> Checking for sed.exe ... <in default path> Checking for re2c.exe ... <in default path> Detected re2c version 1.0.2 Checking for zip.exe ... <in default path> Checking for lemon.exe ... <in default path> 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 ... <in default path> 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。
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI