Write by lyc at 2020-2-22
参考博文:PHP7.2源码编译

一、安装方式1:pecl 命令安装

PECL 是PHP扩展的存储库,提供了所有已知扩展名和目录,用于下载和开发PHP扩展, 类似于Python的pip

1
2
3
4
$ /usr/local/php/bin/pecl install imagick
$ /usr/local/php/bin/pecl install memcached
$ /usr/local/php/bin/pecl install redis
$ /usr/local/php/bin/pecl install xdebug

二、安装方式2:编译安装(推荐)

1.imagick 扩展安装

imagick 扩展下载

1
2
3
4
5
6
7
$ cd /usr/local/src
$ wget https://pecl.php.net/get/imagick-3.4.4.tgz
$ tar zxf imagick-3.4.4.tgz
$ cd imagick-3.4.4
$ /usr/local/php/bin/phpize
$ ./configure --with-php-config=/usr/local/php/bin/php-config
$ make && make install

2.memcache 扩展安装

PHP7 下安装 memcache 和 memcached 扩展

  • memcachememcached 早出现,所以一些老的代码可能还在用 memcache 扩展。**memcached 后来出现,并且大部分框架都支持 memcached**
  • php7+ 不支持 memcache

2.1 php7 以下版本安装 memcache 扩展

memcache 扩展下载

1
2
3
4
5
6
7
$ cd /usr/local/src
$ wget http://pecl.php.net/get/memcache-3.0.8.tgz
$ tar zxf memcache-3.0.8.tgz
$ cd memcache-3.0.8
$ /usr/local/php/bin/phpize
$ ./configure --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir --enable-memcache
$ make && make install

2.2 php7 以上版本安装

php7+ make官方包会报错

1
2
$ make
/usr/local/src/memcache-3.0.8/memcache_pool.h:45:47: fatal error: ext/standard/php_smart_str_public.h: No such file or directory

php7+ 安装 memcache 扩展

php7安装memcache 和 memcached 扩展

1
2
3
4
5
6
$ cd /usr/local/src
$ git clone https://github.com/websupport-sk/pecl-memcache memcache
$ cd memcache
$ /usr/local/php/bin/phpize
$ ./configure --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir --enable-memcache
$ make && make install

3.memcached 扩展安装

memcached 扩展下载

1
2
3
4
5
6
7
8
$ yum install -y zlib zlib-devel libmemcached libmemcached-devel
$ cd /usr/local/src
$ wget https://pecl.php.net/get/memcached-3.1.5.tgz
$ tar zxf memcached-3.1.5.tgz
$ cd memcached-3.1.5
$ /usr/local/php/bin/phpize
$ ./configure --with-php-config=/usr/local/php/bin/php-config
$ make && make install

4.redis 扩展安装

redis 扩展下载

1
2
3
4
5
6
7
$ cd /usr/local/src
$ wget https://pecl.php.net/get/redis-4.3.0.tgz
$ tar zxf redis-4.3.0.tgz
$ cd redis-4.3.0
$ /usr/local/php/bin/phpize
$ ./configure --with-php-config=/usr/local/php/bin/php-config
$ make && make install

5.mongo(不装)

  • mongo 这个扩展已经废弃了,不过 bug 和 security 方面的问题还会继续修复,不支持PHP7
  • mongodb 支持PHP7,同时加入 MongoDB 新版本的特性支持
1
2
3
4
5
6
7
$ cd /usr/local/src
$ wget https://pecl.php.net/get/mongo-1.6.16.tgz
$ tar xzf mongo-1.6.16.tgz
$ cd mongo-1.6.16
$ /usr/local/php/bin/phpize
$ ./configure --with-php-config=/usr/local/php/bin/php-config
$ make && make install

6.xdebug 扩展安装

  • xdebug 跟踪、调试和分析PHP程序的运行状况
  • 如果需要将 Xdebug 扩展和 OPcache 一起使用,必须在 Xdebug 扩展之前加载 OPcache 扩展
1
2
3
4
5
6
7
8
$ cd /usr/local/src
$ wget https://xdebug.org/files/xdebug-2.9.2.tgz
$ tar xzf xdebug-2.9.2.tgz
$ cd xdebug-2.9.2
$ /usr/local/php/bin/phpize
$ ./configure --with-php-config=/usr/local/php/bin/php-config
# $ make && make install
$ make -j `grep processor /proc/cpuinfo | wc -l` && make install

三、php.ini include 扩展

1
2
3
4
5
6
7
8
9
10
11
12
13
ext_path=`ls /usr/local/php-7.3.14/lib/php/extensions/`
cat >> /usr/local/php-7.3.14/etc/php.ini <<EOF
extension_dir = /usr/local/php/lib/php/extensions/${ext_path}
extension = imagick.so
extension = redis.so
extension = memcached.so
zend_extension = "opcache.so"
output_buffering = On
cgi.fix_pathinfo=0
EOF

# 重启php-fpm生效
$ systemctl restart php-fpm