centos的PHP编译安装模块的基本步骤

服务器运行一段时间后,可能突然会需求添加某个扩展,如curl、pdo、xmlrpc等,这就需要在不重新编译PHP的情况下独立添加扩展。

下面以安装curl为例,介绍具体安装步骤。(以下的安装,是基于php源码包安装的,且安装路径是在/usr/local/php,Apache源码编译安装)

1.安装crul服务

wget http://curl.haxx.se/download/curl-7.19.6.tar.gz 

tar -zxvf curl-7.19.6.tar.gz 

cd curl-7.19.6 

./configure --prefix=/usr/local/curl

make

make install

2.编译生成扩展(也就是生成so文件):进入php源程序目录(非安装目录)中的ext目录中,这里存放着各个扩展模块的源代码,选择你需要的模块,比如curl模块:

cd curl

执行phpize生成编译文件,phpize在PHP安装目录的bin目录下(具体可使用 whereis phpize 这个命令来查看)

/usr/local/php5/bin/phpize

运行时,可能会报错:Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable is set correctly and then rerun this script.“,需要安装autoconf:

yum install autoconf(RedHat或者CentOS)、apt-get install autoconf(Ubuntu Linux)

生成配置文件,并编译生成模块:

/usr/local/php5/bin/phpize

./configure --with-curl=/usr/local/curl --with-php-config=/usr/local/php5/bin/php-config

make

make install

这样,curl.so就被复制到PHP对应目录,该目录可通过phpinfo中的extension_dir来查看(如:/usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626/)

3.修改配置在php.ini里,设置扩展目录:(系统默认)

extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626/"

并添加扩展模块引用:

extension = curl.so

4.检查并重启Apache

/usr/local/php/bin/php -v

执行这个命令时,php会去检查配置文件是否正确,如果有配置错误,这里会报错,可以根据错误信息去排查。

总结:php不重新编译的情况下安装扩展模块的步骤可分为3步

           第一步:安装该扩展模块需要的服务,例如上面的curl,必须先安装了curl服务才行,也就是说该步骤不是必须的,需要看情况

           第二步:安装扩展模块,也就是将编译安装好的so文件放到php对应的模块so文件目录中,无论你的php是源码安装还是yum安装的,都有对应的专门存放php扩展模块so文件的目录,可通过phpinfo()来查看,其中,编译安装php的这些模块的一般步骤是进入php源码包中的ext目录相应的扩展文件目录中,然后使用php的phpize和php-config这2个执行文件命令来编译安装

           第三部:在配置文件中加载该模块,这个配置文件加载跟httpd服务的类型有关系,例如Apache和nginx的操作就不同了,具体看情况

相关推荐