weewee 发表于 2015-7-13 09:04:27

php扩展模块安装

同apache
# /usr/local/php/bin/php -m
查看模块

包含静态模块和动态模块,因为没有标识所以看不出来。
解决办法:2种

[*]去重新编译源码包--> make-->make install

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

所以,我们用第二种方法编译动态共享模块
进入php源码包,很多模块的源码都在/usr/local/src/php-5.5.26/ext/ 的目录下,由于我们一开始
# /usr/local/php/bin/php -m 没有发现“curl”模块,我们以curl为例子:
列出/usr/local/src/php-5.5.26/ext/ 目录下的源码
# ls /usr/local/src/php-5.5.26/ext/
在清单里找到curl模块
进入curl的源码下
# cd /usr/local/src/php-5.5.26/ext/curl

在curl下生成configure(可执行文件)
# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version:         20121113
Zend Module Api No:      20121212
Zend Extension Api No:   220121212
编译(手打)(固定语法)
# ./configure --with-php-config=/usr/local/php/bin/php-config
# echo $?
0
# make
# echo $?0# make install
# echo $?
0
生成了curl.so动态模块,这个模块在哪里呢?
下面我们去找一下extension_dir(extension_dir是存放动态扩展模块的目录)
# /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默认的存放目录

# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212
查看到curl.so的模块
curl.soopcache.so
同时,我们对于extension_dir也是可以自定义的,但是默认我们一般去不更改

编辑php.ini
# vim /usr/local/php/etc/php.ini
查找 /extension找到extension区域在最后一行加入 extension=curl.so 如图
我们再查看模块
# /usr/local/php/bin/php -m
现在就有了curl模块了

延伸:

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

最终过滤出来只有一个,说明上面的模块中,只有curl.so它是动态模块,其他全部都是静态。
页: [1]
查看完整版本: php扩展模块安装