我们在Linux中安装好了PHP并成功启动使用后,因为一开始安装不知道需要什么模块导致后面需要安装一些需要的模块不知道如何安装
其实方法也挺简单的和安装方法略同

无需重新编译安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
cd到你php的程序编译目录下的ext目录
cd /opt/php-7.4.16/ext/

#查看你需要安装的模块
[root@localhost ext]# ls
bcmath ctype dom ffi gd iconv ldap mysqlnd openssl pdo_dblib pdo_odbc phar reflection skeleton sodium sysvmsg tokenizer xmlwriter zlib
bz2 curl enchant fileinfo gettext imap libxml oci8 pcntl pdo_firebird pdo_pgsql posix session snmp spl sysvsem xml xsl
calendar date exif filter gmp intl mbstring odbc pcre pdo_mysql pdo_sqlite pspell shmop soap sqlite3 sysvshm xmlreader zend_test
com_dotnet dba ext_skel.php ftp hash json mysqli opcache pdo pdo_oci pgsql readline simplexml sockets standard tidy xmlrpc zip


#假设我需要安装ftp

#切换到ftp模块目录
cd ftp

#执行phpize生成configure编译文件
[root@localhost ftp]# phpize
#结果类似下面
Configuring for:
PHP Api Version: 20190902
Zend Module Api No: 20190902
Zend Extension Api No: 320190902

#执行编译安装,--with-php-config如果你的系统上只有一个php版本无需使用
[root@localhost ftp]# ./configure [--with-php-config=/usr/local/php/bin/php-config]

[root@localhost ftp]# make && make install
#结果返回编译好的扩展的so文件目录
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/

#复制到PHP扩展目录
[root@localhost ext]# cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/
[root@localhost no-debug-non-zts-20190902]# ls
ftp.so opcache.a opcache.so pdo_mysql.so
[root@iZwz9jbpafnxdzfxnphmqnZ no-debug-non-zts-20190902]# cp ftp.so /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902

#PHP扩展目录查看
[root@localhost no-debug-non-zts-20190902]# php -i grep extension
extension_dir => /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902 => /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902

#查看php.ini文件目录
[root@localhost lib]# php -i grep ini
Configuration File (php.ini) Path => /usr/local/php/lib
Loaded Configuration File => /usr/local/php/lib/php.ini


vim /usr/local/php/lib/php.ini
#启用ftp扩展

#重启服务
[root@localhost lib]# killall php-fpm
[root@localhost lib]# php-fpm
[root@localhost lib]# echo "<?php phpinfo();?>" > test.php

#查看所有模块
php -m




重新编译安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#切换到目录里面
cd php-7.2.31

#查找是否有这个选项比如我要安装或启用mbsting模块
./configure --help grep "mbstring"

#可以看到有这么一个选项
--enable-mbstring Enable multibyte string support

#这时候和安装一样不过需要添加选项

#配置
./configure --with-mysql=/usr/bin/mysql_config --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-fpm --with-openssl --enable-mbstring

#安装
make && make install

#这时候虽然安装了但是呢还差一步替换原来的php,需要先把php服务停止
killall php-fpm
cp sapi/fpm/php-fpm /usr/local/bin
/usr/local/bin/php-fpm
#到这一步完全安装好了其他模块也是一样的方法安装,现在可以试试使用mb_strlen()函数试试看是否安装成功