PHP 7下编译memcache扩展

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

时间: 2024-08-11 08:05:55

PHP 7下编译memcache扩展的相关文章

windows 下编译php扩展库pecl里的扩展memcache

Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像.视频.文件以及数据库检索的结果等.简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度. 本篇主要简述编译php及其扩展memcache,在阅读后面内容之前,建议先阅读一下官方文档介绍的“从源程序编译”.下面我们以php-5.3.10为例. 一.编译环境 根据你的php版本选择相应的编译器: php 5.3-5.4 :Visual C++

Linux下安装memcache扩展

memcache是php的一个扩展模块,安装前应先保证目前具备php环境. 先找到phpize的存在目录(如果是通过yum安装的php,则存在于/usr/bin中,如果没找到它们,则#yum install php-devel并重启) 解压memcache压缩包后,"进入解压出的文件夹中".接下来使用phpzie将memcache编译到php扩展模块中. #/usr/bin/phpize #./configure --with-php-config=/usr/bin/php-confi

在Linux下编译php扩展

在windows下我们需要开启某个扩展,很容易.一般情况下,dll文件都已经安静地躺在extension目录下,只等待你在php.ini里将它前面的;去掉. 而在linux,你cd到php的extensions目录往往发现里面空空的.或许只有几个so文件落寞地待着. 这里以编译fileinfo扩展为例(注意这是php内置的扩展,如果你编译的是第三方扩展请自行到官网下载源码) 一.找到扩展包 你需要到PHP源码包里寻找,希望源码包没被你删除. cd到php-5.x.x/ext/目录,你会发现里面有

ubuntu在xampp下安装memcache扩展

sudo wget http://pecl.php.net/get/memcache-2.2.1.tgz sudo tar vxzf memcache-2.2.1.tgz cd memcache-2.2.1/ sudo /opt/lampp/bin/phpize ./configure --with-php-config=/opt/lampp/bin/php-config --enable-memcache #make #make install (会显示编译好了memcache.so,并安装到

mac下编译php扩展报错,找不到php.h文件

fatal error: 'php.h' file not found run command "xcode-select --install" to install the XCode5 Command Line Tools 原文地址:https://www.cnblogs.com/rickguo/p/10739565.html

PHP - windows下编译PHP 7.1的memcache

前几天PHP 7.1出来了,兴冲冲的升个级,结果赫然发现memcache不能用了,当时就是眼前一黑,PHP你能不能不要这样啊,升了一个小版本而已,这就不兼容了! 自己动手,丰衣足食,看来还是需要自己编译一下了. 编译方法参见我的另一篇博客:PHP 7下编译memcache扩展,只是需要注意下载的文件都要换成PHP 7.1相关的文件. 附件就是编译好的动态库,实测可用.

linux 编译PHP memcache扩展

在Linux下编译memcache:memcache官网:http://memcached.org/前期准备:如果是虚拟机 保证虚拟机 联网安装依赖包yum -y install gcc make libtool autoconf编译libevent(官网:http://libevent.org/ memcache编译需要用到这个东西)cd /usr/local/srcwget https://github.com/libevent/libevent/releases/download/rele

开启php的memcache扩展

php默认情况下并没有开启的memcache扩展,下面将详细讲解memcache扩展的安装. windows下安装memcache扩展 访问php官网 http://pecl.php.net/package/memcache 点击DLL 下载对应windows版本的dll 将dll复制到 php/ext/ 修改php.ini extension=php_memcache.dll 重启web访问即可开启 linux下安装memcache扩展 centOs : yum install php-pec

ubuntu 搭建php7-memcached和memcache扩展

Memcache存放Session 1.如果你能修改到服务器配置文件,那就打开打开php.ini(ubuntu php7 在/etc/php/7.0/apache2/php.ini) 或者某个目录下的 .htaccess : 二:php安装memcace扩展 老方法的安装memcache会报错! 工作到这里 完美!看上图 问题:我phpinfo中已经有了memcache 和memcached扩展 答! PHP 连接 Memcached 参考链接1:https://serversforhacker