本文索引:
- 情况说明
- 编译安装前的准备
- 安装范例
- 额外情况
情况说明
在很多情况下,之前编译安装php时,有些模块并没有被编译进软件,我们可以在后期根据自己的需要进行编译安装,将某个模块编译进入php。
编译安装前的准备
重新编译需要autoconf包
[root@localhost ftp]# /usr/local/php5/bin/phpize
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
[root@localhost ftp]# yum install -y autoconf
安装范例
以redis为例(redis通常在lamp中作为缓存使用)
下载redis包(第三方模块包需要下载,php源码包内的ext目录下包含一些常用的模块包)
[root@localhost src]# wget https://codeload.github.com/phpredis/phpredis/zip/develop
# 下载的develop是一个zip包
[root@localhost src]# mv develop phpredis-develop.zip
[root@localhost src]# unzip phpredis-develop.zip
生成configure文件(前提要安装autoconf)
[root@localhost phpredis-develop]# yum install -y autoconf
[root@localhost phpredis-develop]# /usr/local/php7/bin/phpize
Configuring for:
PHP Api Version: 20160303
Zend Module Api No: 20160303
Zend Extension Api No: 320160303
安装
[root@localhost phpredis-develop]# ./configure --with-php-config=/usr/local/php7/bin/php-config
[root@localhost phpredis-develop]# make
[root@localhost phpredis-develop]# make install
Installing shared extensions: /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/
# 这个目录时存放so文件的目录
查看
[root@localhost phpredis-develop]# /usr/local/php7/bin/php -i |grep -i extension_dir
extension_dir => /usr/local/php7/lib/php/extensions/no-debug-zts-20160303 => /usr/local/php7/lib/php/extensions/no-debug-zts-20160303
sqlite3.extension_dir => no value => no value
修改PHP配置文件php.ini
[root@localhost phpredis-develop]# vi /usr/local/php7/etc/php.ini
加入一行extension=redis.so
[root@localhost phpredis-develop]# /usr/local/php7/bin/php -m | grep redis
redis
额外说明
php的大部分模块都可以这样进行安装。
有一个需要额外注意:mysqli模块
前文第三步中编译mysqli时编译参数需要额外指定mysql_config文件
[root@localhost mysqli]# ./configure --with-php-config=/usr/local/php5/bin/php-config --with-mysqli=/usr/local/mysql/bin/mysql_config