同apache
[root@LAMPLINUX ~]# /usr/local/php/bin/php -m
查看模块
包含静态模块和动态模块,因为没有标识所以看不出来。
解决办法:2种
去重新编译源码包--> make--> make install
使用动态方法加载,只编译这个模块就可以了。
所以,我们用第二种方法编译动态共享模块
进入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 如图
我们再查看模块
[root@LAMPLINUX curl]# /usr/local/php/bin/php -m
现在就有了curl模块了
延伸:
我们也可以想想,这里面动态加载模块都有哪些呢?
最终过滤出来只有一个,说明上面的模块中,只有curl.so它是动态模块,其他全部都是静态。