设为首页 收藏本站
查看: 881|回复: 0

[经验分享] PHP 7下编译memcache扩展

[复制链接]

尚未签到

发表于 2018-12-16 15:27:45 | 显示全部楼层 |阅读模式
1.1  PHP-memcache(for PHP 7.x)
1.1.1  概述
  PHP 7出来后,http://pecl.php.net/package/memcache上没有for PHP7的PHP-memcache版本,需要自己编译一个。网上找到的大多是在linux下的,而我需要的是windows下的版本,找了好久没也没有找到合适的版本,只好自己动手了。
  注:本文讲的是编译PHP-memcache,而不是memcached。
1.1.2  下载文件
  编译前需要子下载如下文件:
  1、 编译环境:
  PHP 7是用VC14编译的,因此编译PHP-memcached也需要使用VC14,因为并不常用VC14,所以到微软的官网上下载visual studio 2015 entrpise的试用版即可。
  2、 PHP源代码:
  从PHP官网上下载源代码,地址:http://windows.php.net/downloads/releases/php-7.0.6-src.zip
  3、 下载PHP-SDK文件:
  地址:http://windows.php.net/downloads/php-sdk/
  在这里要下载两个文件:

  4、 下载memcache扩展包的源码:
  地址:https://github.com/websupport-sk/pecl-memcache
  PHP memcache官网已经N年没有更新了,上面这个网址是github上的支持PHP 7的分支代码。
1.1.3  编译
  1、 创建一个用于编译的目录:D:\PHPCompile;
  2、 解压php-sdk-binary-tools-20110915.zip里面的文件到PHPCompile目录下;
  3、 编辑“D:\PHPCompile\bin\phpsdk_buildtree.bat”,在“GOTO EXIT”前增加代码:
  MD %_%\vc14\x86\deps\bin
  MD %_%\vc14\x86\deps\lib
  MD %_%\vc14\x86\deps\include
  MD %_%\vc14\x64\deps\bin
  MD %_%\vc14\x64\deps\lib
  MD %_%\vc14\x64\deps\include
  注:这是因为phpsdk_buildtree.bat年代久远,还不支持VC14,因此需要进行如此修改。
  4、 在开始菜单找到并打开“VS2015 x64 本机工具命令提示符”(注:如果要编译32位的,则需进入VS2015 x86 本机工具命令提示符),进入到D:\PHPCompile目录下,然后执行如下命令:
  bin\phpsdk_setvars.bat
  bin\phpsdk_buildtree.bat phpdev
  5、 执行后,目录下会生成phpdev文件夹;
  6、 进入D:\PHPCompile\phpdev\vc14\x64\,把deps-7.0-vc14-x64.7z解压到该目录下,覆盖deps文件夹
  7、 把php源代码也解压到x64目录下,将解压后的目录名改为PHP7;
  8、 在x64目录下创建pecl文件夹,在该文件夹下再建立memcache文件夹,将下载的PHP7-memcache代码解压到这个目录下,最终的目录结构如下:

  9、 执行以下命令,用于创建php编译配置:
  cd phpdev\vc14\x64\php7
  buildconf
  configure --help >..\configure_help.txt
  configure --disable-all --enable-cli --enable-zlib --enable-hash --enable-session --without-gd --with-bz2 --enable-memcache=shared --enable-object-out-dir=..\obj
  注:配置中的--enable-memcache=shared意思是 memcache 以 dll 形式生成,否则就和php集成在一起了。
  如果提示bison.exe不存在,执行如下命令,再重新执行上面的操作:
  set path=%path%;D:\PHPCompile\bin
  10、      Configure命令执行成功后如下,实际开始编译前最好检查下参数是否有问题:
  snapshot: forcing one-shot on
  snapshot: forcing debug-pack on
  snapshot: forcing --disable-security-flags shared
  snapshot: forcing analyzer on
  snapshot: forcing --without-uncritical-warn-choke shared
  snapshot: forcing codegen-arch on
  snapshot: forcing apache2handler on
  snapshot: forcing apache2-2handler on
  snapshot: forcing apache2-4handler on
  snapshot: forcing cli-win32 on
  snapshot: forcing embed on
  snapshot: forcing phpdbg on
  snapshot: forcing phpdbgs on
  snapshot: forcing --disable-phpdbg-webhelper shared
  snapshot: forcing bz2 on
  snapshot: forcing curl on
  snapshot: forcing dba on
  snapshot: forcing enchant on
  snapshot: forcing fileinfo on
  snapshot: forcing ftp on
  snapshot: forcing --without-libwebp shared
  snapshot: forcing gettext on
  snapshot: forcing gmp on
  snapshot: forcing mhash on
  snapshot: forcing imap on
  snapshot: forcing interbase on
  snapshot: forcing intl on
  snapshot: forcing ldap on
  snapshot: forcing libmbfl on
  snapshot: forcing mbstring on
  snapshot: forcing mbregex on
  snapshot: forcing --disable-mbregex-backtrack shared
  snapshot: forcing mcrypt on
  snapshot: forcing oci8 on
  snapshot: forcing oci8-11g on
  snapshot: forcing oci8-12c on
  snapshot: forcing odbc on
  snapshot: forcing --disable-opcache-file shared
  snapshot: forcing openssl on
  snapshot: forcing pgsql on
  snapshot: forcing pspell on
  snapshot: forcing shmop on
  snapshot: forcing snmp on
  snapshot: forcing sockets on
  snapshot: forcing sqlite3 on
  snapshot: forcing sysvshm on
  snapshot: forcing tidy on
  snapshot: forcing exif on
  snapshot: forcing mysqli on
  snapshot: forcing pdo on
  snapshot: forcing pdo-dblib on
  snapshot: forcing pdo-mssql on
  snapshot: forcing pdo-firebird on
  snapshot: forcing pdo-mysql on
  snapshot: forcing pdo-oci on
  snapshot: forcing pdo-odbc on
  snapshot: forcing pdo-pgsql on
  snapshot: forcing pdo-sqlite on
  snapshot: forcing pdo-sqlite-external on
  snapshot: forcing phar-native-ssl on
  snapshot: forcing soap on
  snapshot: forcing xmlrpc on
  snapshot: forcing xsl on
  Saving configure options to config.nice.bat
  Checking for cl.exe ...
  Detected compiler MSVC14 (Visual C++ 2015)
  Detected 64-bit compiler
  Checking for link.exe ...  C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64
  Checking for nmake.exe ...
  Checking for lib.exe ...
  Checking for bison.exe ...
  Checking for re2c.exe ...
  Detected re2c version 0.13.5
  Checking for zip.exe ...
  Checking for lemon.exe ...
  Checking for mc.exe ...  C:\Program Files (x86)\Windows Kits\8.1\bin\x64
  Checking for mt.exe ...  C:\Program Files (x86)\Windows Kits\8.1\bin\x64
  Enabling multi process build
  Build dir: D:\PHPCompile\phpdev\vc14\x64\obj\Release_TS
  PHP Core:  php7ts.dll and php7ts.lib
  Checking for wspiapi.h ...
  Enabling IPv6 support
  Enabling SAPI sapi\cgi
  Enabling SAPI sapi\cli
  Enabling extension ext\date
  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
  Enabling extension ..\pecl\memcache [shared]
  Creating build dirs...
  Generating files...
  Generating Makefile
  Generating main/internal_functions.c
  [content unchanged; skipping]
  Generating main/config.w32.h
  Generating phpize
  Done.
  Enabled extensions:
  -----------------------
  | Extension  | Mode   |
  -----------------------
  | date       | static |
  | memcache   | shared |
  | pcre       | static |
  | reflection | static |
  | session    | static |
  | spl        | static |
  | standard   | static |
  -----------------------
  Enabled SAPI:
  -------------
  | Sapi Name |
  -------------
  | cgi       |
  | cli       |
  -------------
  ----------------------------------------------
  |                 |                          |
  ----------------------------------------------
  | Build type      | Release                  |
  | Thread Safety   | Yes                      |
  | Compiler        | MSVC14 (Visual C++ 2015) |
  | Architecture    | x64                      |
  | Optimization    | PGO disabled             |
  | Static analyzer | disabled                 |
  ----------------------------------------------
  Type 'nmake snap' to build a PHP snapshot
  D:\PHPCompile\phpdev\vc14\x64\php7>
  11、      执行nmake命令,等待十几分钟,如果没有问题就会编译成功,如果有问题,呵呵,那就要根据错误信息一点点排查解决了;
  12、      编译成功后,可在“D:\PHPCompile\phpdev\vc14\x64\obj\Release_TS\”目录下找到php_memcache.dll;
1.1.4  安装
  安装很简单,将php_memcache.dll解压到PHP的EXT目录下即可。
1.1.5  配置
  打开PHP.INI,在一堆extension配置项中另起一行,输入:
  extension=php_memcache.dll
1.1.6  验证
  重启Apache服务器后,在浏览器中打开http://localhost/phpinfo.php,搜索memcache,看到如下内容就说明安装成功了:

1.1.7  参考文献
  https://wiki.php.net/internals/windows/stepbystepbuild#building_pecl_extensions
  http://blog.csdn.net/mycwq/article/details/10165955
  https://bugs.php.net/bug.php?id=70751




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-652101-1-1.html 上篇帖子: PHP 7 安装配置(win10) 下篇帖子: PHP问题 —— undefined function mb_convert_encoding
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表