编译php-memcached扩展

扩展安装的步骤大概分为4步
  1.下载并解压扩展包,进入扩展包目录
  2./usr/local/php/bin/phpize 生成configure
    由于php的版本一直在改变,那些扩展无法知道用户使用的php版本,所以无法预先生成configure文件
    这时候可以让php来生成,执行这句命令就会根据php当前版本生成一个configure文件
  3../configure --with-php-config=/usr/local/php5314/bin/php-config
  4.make && make install

1.下载该扩展 wget http://pecl.php.net/get/memcache-2.2.7.tgz
2.解压并进入解压包
  tar xfv memcache-2.2.7.tgz
  cd memcache-2.2.7
3./usr/local/php/bin/phpize
  phpize的作用可以这样理解:侦测环境(phpize工具是在php安装目录下,基于这点phpize对应了当时的php环境,所以是要根据该php的配置情况生成对应的configure文件),建立一个configure文件。必须在一个目录下去运行phpize。那么phpize就知道你的的环境是哪个目录,并且configure文件建立在该目录下。
4../configure --with-php-config=/usr/local/php/bin/php-config
  检测安装环境并指定php-config文件
5.make && make install
  失败,原因为fatal error: ext/standard/php_smart_str.h:
  经过百度查询后发现php7修改了php_smart_str.h为php_smart_string.h
  所以以上步骤行不通,即使 ./configure --with-php-config=/usr/local/php/bin/php-config --disable-memcached-sasl 也不行
6.重新来
  1.git clone https://github.com/php-memcached-dev/php-memcached
  没有安装git 就 yum install git -y
2.cd php-memcached
3./usr/local/php/bin/phpize
4../configure --with-php-config=/usr/local/php/bin/php-config
  出现错误error: memcached support requires libmemcached,这是缺少libmemcached依赖
  则 yum install libmemcached libmemcached-devel
  重新 ./configure --with-php-config=/usr/local/php/bin/php-config
5.make && make install
  安装成功,并给出一条路径 /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/
  该路径是安装后生成memcached.so的位置
6.配置php.ini
  vim /usr/local/php/etc/php.ini
  增加extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/memcached.so
7.在nginx的html目录下增加test.php,内容如下
  <?php
  phpinfo();
8.重启php和nginx,浏览器访问http://192.168.30.129/test.php
  发现并没有出现memcache模块
9.感觉是php.ini没有被加载,检查发现phpinfo()输出到浏览器的模块中
  Configuration File (php.ini) Path /usr/local/php/etc
  而Loaded Configuration File none
  此时感觉是Loaded Configuration File出了问题
10.百度后都说Loaded Configuration File会加载lib目录下的php.ini,所以将etc下的php.ini拷贝到lib目录下
11.重启php,浏览器访问,发现成功加载memcache模块

原文地址:https://www.cnblogs.com/chuwu/p/9732430.html