php扩展模块安装

同apache

[[email protected] ~]# /usr/local/php/bin/php -m 

查看模块

php扩展模块安装

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

解决办法:2种

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

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

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

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

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

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

[[email protected] ~]# ls /usr/local/src/php-5.5.26/ext/

在清单里找到curl模块

进入curl的源码下

[[email protected] ~]# cd /usr/local/src/php-5.5.26/ext/curl

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

[[email protected] curl]# /usr/local/php/bin/phpize

Configuring for:

PHP Api Version:         20121113

Zend Module Api No:      20121212

Zend Extension Api No:   220121212

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

[[email protected] curl]# ./configure --with-php-config=/usr/local/php/bin/php-config

[[email protected] curl]# echo $?

0

[[email protected] curl]# make

[[email protected] curl]# echo $?

0

[[email protected] curl]# make install

[[email protected] curl]# echo $?

0

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

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

[[email protected] 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默认的存放目录

[[email protected] curl]# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212

查看到curl.so的模块

curl.so  opcache.so

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

编辑php.ini

[[email protected] curl]# vim /usr/local/php/etc/php.ini

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

php扩展模块安装我们再查看模块

[[email protected] curl]# /usr/local/php/bin/php -m

现在就有了curl模块了

php扩展模块安装

延伸:

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

php扩展模块安装

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



本文转自 听丶飞鸟说 51CTO博客,原文链接:http://blog.51cto.com/286577399/1673244