zoukankan      html  css  js  c++  java
  • PHP7 下安装 memcache 和 memcached 扩展

    转载自:https://www.jianshu.com/p/c06051207f6e

    Memcached 是高性能的分布式内存缓存服务器,而PHP memcache 和 memcached 都是 Memcached 服务器的 PHP 扩展。其中memcache 比 memcached 早出现,所以一些老的代码可能还在用 memcache 扩展。memcached 后来出现,并且大部分框架都支持 memcached,现在相对较流行。可以根据自己需要,安装一个就可以。这里两个的安装方法都说一下。

    安装依赖

    首先是 memcached,这个扩展需要 libmemcached 客户端库,否则会出现如下错误

    checking for libmemcached location... configure: error: memcached support requires libmemcached. Use --with-libmemcached-dir=<DIR> to specify the prefix where libmemcached headers and library are located
    ERROR: `/var/tmp/memcached/configure --with-libmemcached-dir=no' failed

    可以通过如下方法安装

    [root@lnmp lnmp.cn]# yum install libmemcached libmemcached-devel

    而 memcache 模块使用了函数 zlib 来支持数据压缩,因此安装此模块需要安装 Zlib 模块。否则会出现如下错误:

    checking for the location of zlib... configure: error: memcache support requires ZLIB. Use --with-zlib-dir=<DIR> to specify prefix where ZLIB include and library are located
    ERROR: `/var/tmp/memcache/configure --enable-memcache-session=No' failed

    可以如下方法用 yum 来安装:

    [root@lnmp lnmp.cn]# yum install zlib zlib-devel

    安装 memcached 扩展

    尝试用 PECL 安装,memcached 在 PECL 上的地址是:
    https://pecl.php.net/package/memcached

    [root@lnmp lnmp.cn]# pecl install memcached
    pecl/memcached requires PHP (version >= 5.2.0, version <= 6.0.0, excluded versions: 6.0.0), installed version is 7.0.8
    No valid packages found
    install failed
    [root@localhost vagrant]#

    提示很明显,PECL 上的 memcached 扩展只支持 PHP 5.2 以上,6.00 以下的版本。还未更新到 PHP7。不过还好的是在 PECL 的 memcached 页面可以找到他们在 github 上的链接:
    https://github.com/php-memcached-dev/php-memcached
    这上面的代码已经有可以支持到 PHP7 的分支。这里将源码统一下载到 php 源码的 ext 目录:

    [root@lnmp lnmp.cn]# cd /usr/local/src/php-7.0.8/ext/
    [root@lnmp ext]# git clone https://github.com/php-memcached-dev/php-memcached memcached
    [root@lnmp ext]# cd memcached/

    checkout 到 php7 分支:

    [root@lnmp memcached]# git checkout php7
    Branch php7 set up to track remote branch php7 from origin.
    Switched to a new branch 'php7'
    [root@lnmp memcached]#

    用 phpize 安装,我的 PHP 是安装在 /usr/local/php7 下

    [root@lnmp memcached]# /usr/local/php7/bin/phpize
    [root@lnmp memcached]# ./configure --with-php-config=/usr/local/php7/bin/php-config

    接着 make 和 make install

    [root@lnmp memcached]# make

    [root@lnmp memcached]# make install
    Installing shared extensions: /usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/
    [root@lnmp memcached]#

    可以看到 memcached 已经安装完成,并且扩展文件已经放到提示的目录:

    [root@lnmp memcached]# ls /usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/
    memcached.so opcache.a opcache.so
    [root@lnmp memcached]#

    最后一步在 php.ini 中引入 memcached.so

    [root@lnmp memcached]# vim /usr/local/php7/lib/php.ini

    加入:

    extension=memcached.so

    记得 reload 一下 php-fpm 才能生效

    [root@lnmp memcached]# systemctl reload php-fpm

    打开 phpinfo 页面,已经已经看到 memcached 扩展成功安装了。

     
    php7 memcached

     

    安装 memcache 扩展

    同样尝试用 PECL 来安装:

    [root@lnmp memcached]# pecl install memcache

    但同样失败

    /tmp/pear/temp/memcache/memcache.c:40:40: fatal error: ext/standard/php_smart_str.h: No such file or directory

    include "ext/standard/php_smart_str.h"

                                                                                ^
    

    compilation terminated.
    make: *** [memcache.lo] Error 1
    ERROR: `make' failed

    貌似原因也是 PECL 还不支持在 PHP7 下安装 memcache 扩展,
    https://pecl.php.net/package/memcache

    2013年以来为更新过。此路不通只能另想办法,同样是到 github 上碰碰运气。搜索 pecl memcache
    https://github.com/search?utf8=%E2%9C%93&q=pecl+memcache&type=Repositories&ref=searchresults

    其中第一个(https://github.com/websupport-sk/pecl-memcache)就是想要的,并且代码已经支持到 PHP7,立即下载代码编译:

    [root@lnmp memcached]# cd ../
    [root@lnmp ext]# git clone https://github.com/websupport-sk/pecl-memcache memcache
    [root@lnmp ext]# cd memcache

    用 phpize 安装,步骤和 memcached 一模一样

    [root@lnmp memcache]# /usr/local/php7/bin/phpize
    [root@lnmp memcache]# ./configure --with-php-config=/usr/local/php7/bin/php-config
    [root@lnmp memcache]# make
    [root@lnmp memcache]# make install
    Installing shared extensions: /usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/
    [root@lnmp memcache]#

    类似 memcached , 将 memcache.so 在 php.ini 中引入

    [root@lnmp memcache]# vim /usr/local/php7/lib/php.ini

    加入:

    extension=memcache.so

    最后 reload php-fpm

    [root@lnmp memcache]# systemctl reload php-fpm

    大功告成,可以在 phpinfo 页面看到 memcahce 和 memchaced 都已经成功安装

     
    php7 memcache

    安装 Memcached 内存缓存服务器

    Centos 下可以用 yum 进行安装

    [root@lnmp memcache]# yum install memcached

    再启动 Memcached 就可以测试 PHP 扩展了

    [root@lnmp memcache]# systemctl start memcached

    默认端口是 11211
    转自: 我不是鱼
    -- 感谢大佬
    原文连接: http://www.lnmp.cn/install-memcache-and-memcached-extends-under-php7.html

  • 相关阅读:
    LeetCode OJ 107. Binary Tree Level Order Traversal II
    LeetCode OJ 116. Populating Next Right Pointers in Each Node
    LeetCode OJ 108. Convert Sorted Array to Binary Search Tree
    LeetCode OJ 105. Construct Binary Tree from Preorder and Inorder Traversal
    LeetCode OJ 98. Validate Binary Search Tree
    老程序员解Bug的通用套路
    转载 四年努力,梦归阿里,和大家聊聊成长感悟
    转载面试感悟----一名3年工作经验的程序员应该具备的技能
    Web Service和Servlet的区别
    关于spring xml文件中的xmlns,xsi:schemaLocation
  • 原文地址:https://www.cnblogs.com/maidongdong/p/11527926.html
Copyright © 2011-2022 走看看