PHP 7下编译memcache扩展
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
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。