0x01 查看modules
[root@0cab39d51c9e ~]# php -m
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
igbinary
json
libxml
mbstring
mcrypt
memcache
memcached
msgpack
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
pspell
readline
redis
Reflection
session
SimpleXML
sockets
SPL
sqlite3
standard
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
yaf
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
0x02 找到php module所在目录
# 查看php.ini文件,可以通过 extension_dir去配置modules的目录。
less php.ini
# php.ini部分文件内容如下:
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
; extension_dir = "ext"
# 这里我使用的是默认的目录
cd /usr/lib64/php/modules
# 也可以通过find命令查询so文件所在目录
[root@0cab39d51c9e ~]# find / -name mysqli.so
/usr/lib64/php/modules/mysqli.so
0x03 添加so文件
至于怎么获得so文件,这里就不赘述了,每个模块都有自己的编译方法,并且方法较多。
得到so文件后,将对应的so文件添加至php module文件夹即可
0x04 配置so文件路径
# 查看php.ini
less php.ini
# php.ini部分文件内容如下:
; If you wish to have an extension loaded automatically, use the following
; syntax:
;
; extension=modulename.extension
;
; For example, on Windows:
;
; extension=msql.dll
;
; ... or under UNIX:
;
; extension=msql.so
;
; ... or with a path:
;
; extension=/path/to/extension/msql.so
;
; If you only provide the name of the extension, PHP will look for it in its
; default extension directory.
;;;;
; Note: packaged extension modules are now loaded via the .ini files
; found in the directory /etc/php.d; these are loaded by default.
;;;;
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
# 由以上配置可知,可以通过extension=xxx.so的方式去配置加载具体的so文件。
# 并且默认会加载所有的/etc/php.d目录下的.ini文件
# 所以我们将为每个so文件在/etc/php.d目录下创建对应的.ini文件即可
0x05 添加ini文件
# 添加完成后的文件如下:
less 30-phalcon.ini
; Enable phalcon extension module
extension=phalcon
# ini文件前面的数字表示优先级,数字越小越先加载。
# 本质上就是从上往下按文件名称的顺序加载,数字越小,文件越靠上。
0x06 重启php-fpm进程
# 重新查看php module,发现多了phalcon模块,添加成功
php -m