同apache

[root@LAMPLINUX ~]# /usr/local/php/bin/php -m 

查看模块

wKiom1Wg0dGzpNZPAAE3Gnj-Z5k753.jpg

包含静态模块和动态模块,因为没有标识所以看不出来。

解决办法:2种

  1. 去重新编译源码包--> make-->  make install

  2. 使用动态方法加载,只编译这个模块就可以了。

所以,我们用第二种方法编译动态共享模块

进入php源码包,很多模块的源码都在/usr/local/src/php-5.5.26/ext/ 的目录下,由于我们一开始

[root@LAMPLINUX ~]# /usr/local/php/bin/php -m 没有发现“curl”模块,我们以curl为例子:

列出/usr/local/src/php-5.5.26/ext/ 目录下的源码

[root@LAMPLINUX ~]# ls /usr/local/src/php-5.5.26/ext/

在清单里找到curl模块

进入curl的源码下

[root@LAMPLINUX ~]# cd /usr/local/src/php-5.5.26/ext/curl

在curl下生成configure(可执行文件)

[root@LAMPLINUX curl]# /usr/local/php/bin/phpize

Configuring for:

PHP Api Version:         20121113

Zend Module Api No:      20121212

Zend Extension Api No:   220121212

编译(手打)(固定语法)

[root@LAMPLINUX curl]# ./configure --with-php-config=/usr/local/php/bin/php-config

[root@LAMPLINUX curl]# echo $?

0

[root@LAMPLINUX curl]# make

[root@LAMPLINUX curl]# echo $?

0

[root@LAMPLINUX curl]# make install

[root@LAMPLINUX curl]# echo $?

0

生成了curl.so动态模块,这个模块在哪里呢?

下面我们去找一下extension_dir(extension_dir是存放动态扩展模块的目录)

[root@LAMPLINUX curl]# /usr/local/php/bin/php -i |grep extension_dir

产生信息

extension_dir => /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212 => /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212

sqlite3.extension_dir => no value => no value

红字部分即为extension_dir默认的存放目录

[root@LAMPLINUX curl]# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212

查看到curl.so的模块

curl.so  opcache.so

同时,我们对于extension_dir也是可以自定义的,但是默认我们一般去不更改

编辑php.ini

[root@LAMPLINUX curl]# vim /usr/local/php/etc/php.ini

查找 /extension  找到extension区域在最后一行加入 extension=curl.so 如图

wKiom1Wg0MXR5SyeAAKCUiWQcdw409.jpg我们再查看模块

[root@LAMPLINUX curl]# /usr/local/php/bin/php -m

现在就有了curl模块了

wKioL1Wg01Xxy8-_AAD-KLCW554945.jpg

延伸:

我们也可以想想,这里面动态加载模块都有哪些呢?

wKioL1Wg1K6iAtqUAABA-xDA1-E622.jpg

最终过滤出来只有一个,说明上面的模块中,只有curl.so它是动态模块,其他全部都是静态。