我们可能经常会遇到这样的问题,就是花了比较长的时间把php环境安装完之后发现有一个必须的模块忘记加到配置里面,或者在经过一段时间之后发现自己需要用到php的某个模块或外挂模块,这时候总不可能把已经安装好的php卸载了重新安装在安装时将模块配置进去吧?这样感觉很傻的样子。之前我就遇到这样的问题,在朋友的怂恿下还真的把php卸载了重新安装过【囧】...然而事实上并不用这样,我们可以在原来的基础上进行模块添加的。
有童鞋可能会发现php安装目录中 /usr/local/php/bin 下存在 phpize 这样一个可执行文件,它就跟安装php模块有关,那么 phpize是什么呢?
php官方的说明:http://php.net/manual/en/install.pecl.phpize.php
phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块。比如你想在原来编译好的php中加入memcache或者ImageMagick等扩展模块,可以使用phpize,通过以下几步进行操作。(下面以安装memcache为例)
1. 首先确定该扩展是否为php源码中已经集成的,具体可以进入源码包对应目录如 /tmp/php-5.6.15/ext 中查找
# cd /tmp/php-5.6.15/ext
# ll | grep memcache
若存在,则可以使用源码直接安装,否则下载源码包进行安装
# wget http://pecl.php.net/get/memcache-2.2.7.tgz
# tar -zxf memcache-2.2.7.tgz
(注意:我们安装的是php的memcache模块,而不是memcached程序,实际要使memcache模块生效,还需要安装memcached程序)
2. 进入安装包中,执行phpize,产生configure可执行文件
# cd [目录]/memcache
# phpize (或/usr/local/php/bin/phpize)
3. 运行可执行文件 configure
# ./configure --with-php-config=/usr/local/php/bin/php-config
4. make 安装
# make
# make install
执行上述步骤后显示 :Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/ ,说明memcache扩展已经安装到上述目录下了,进入查看,确实已经存在了
5. 最后一步是修改php.ini配置文件使新模块生效
# vi /usr/local/php/etc/php.ini
在 Dynamic Extensions(动态扩展) 那部分下面添加 extension=memcache.so,保存后退出,重启php
运行php命令查看memcache模块是否加载成功
# php -m
若出现memcache 则模块成功安装。
注:当安装php外挂扩展时,上面的第三步可能会出现如下的错误:
Cannot find config.m4.
Make sure that you run '/usr/local/php-5.6.15/bin/phpize' in the top level source directory of the module
检查下是否已经进入你所要安装的扩展目录。