1.编译安装
①http://pecl.php.net/ 在php官方扩展的网站下 搜索相关的扩展(windows下要注意版本和系统位数以及是否是线程安全)
②解压扩展包(tar -zxvf 扩展包名 )
③生成configure文件 (进入解压目录,执行:php安装路径/bin/phpize ,一般是/usr/local/php/bin/phpize)
④编译生成.so文件 (./configure --with-php-config=/usr/local/php/bin/php-config)PS:有一些扩展在编译的过程中还需依赖其他的包,则需要加上相应的参数(对应库的位置),不过这样可能还会报一些依赖的错误,你如果觉得烦,则可以使用pecl 方式安装。
⑤编辑php.ini 文件 添加相应的扩展(如:extension=redis.so),重启php-fpm。
PS:其实很多扩展在php源码包中已经包含,不需要额外去下载,而且源码包中的扩展版本是完全匹配当前php版本的,例如在php7.2.6 中有以下扩展(基本包含了常用扩展):
bcmath |
bz2 |
calendar |
com_dotnet |
ctype |
curl |
date |
dba |
dom |
enchant |
exif |
ext_skel |
ext_skel_win32.php |
fileinfo |
filter |
ftp |
gd |
gettext |
gmp |
hash |
iconv |
imap |
interbase |
intl |
json |
ldap |
libxml |
mbstring |
mysqli |
mysqlnd |
oci8 |
odbc |
opcache |
openssl |
pcntl |
pcre |
pdo |
pdo_dblib |
pdo_firebird |
pdo_mysql |
pdo_oci |
pdo_odbc |
pdo_pgsql |
pdo_sqlite |
pgsql |
phar |
posix |
pspell |
readline |
recode |
reflection |
session |
shmop |
simplexml |
skeleton |
snmp |
soap |
sockets |
sodium |
spl |
sqlite3 |
standard |
sysvmsg |
sysvsem |
sysvshm |
tidy |
tokenizer |
wddx |
xml |
xmlreader |
xmlrpc |
xmlwriter |
xsl |
zend_test |
zip |
zlib |
如果没有装openssl的扩展,通过pecl方式去安装扩展还是会报错的:
Cannot find config.m4. Make sure that you run '/usr/local/php/bin/phpize' in the top level source directory of the module
通过源码包安装扩展的方法:
①进入源码包
cd /usr/source/php-7.2.6/ext/openssl/
②执行phpize
/usr/local/php/bin/phpize
有可能出现:Cannot find config.m4.
Make sure that you run '/usr/local/php/bin/phpize' in the top level source directory of the module
解决方法:cp ./config0.m4 ./config.m4
③configure
./configure --with-openssl --with-php-config=/usr/local/php/bin/php-config
标红的为扩展名称
④make
⑤make install
⑥编辑php.ini文件 打开或新增扩展 ,linux下为xxxx.so
⑦重启php-fpm
2.pecl 方式安装
①先检查/usr/local/php/bin/ 下面有没有 pecl (确定一下是php安装目录下的pecl,whereis pecl 查看系统中pecl的位置),pear(安装php-pear是为了使用pecl 中的 phpize)如果没有,则用yum安装(yum install php-pear php-devel)
②更新一下pecl库 pecl channel-update pecl.php.net
③安装相应的扩展 pecl install redis (如果没把php的路径加入环境变量,则需要用绝对地址)
④一般通过pecl安装的扩展都自动加入php.ini的配置了,如果通过phpinfo() 或者php-m没有查询到安装的扩展,则把相应的so文件加入到php.ini中(extension=redis.so)再重启php-fpm
⑤ 卸载扩展 pecl uninstall [对应的扩展]
⑥ 安装指定版本的扩展 pecl install [包地址] 参考:https://www.jianshu.com/p/9794351c9533