最近遇到一个需求,希望在一台机子上安装多个版本的PHP,用于编译对应版本的PHP扩展。
PHP源码编译
1.下载PHP源码包并解压
2.进入解压后的文件夹,输入命令:
在/usr/local/目录下配置各个版本的php,按照版本名称分类。
版本名称:phpAPINO-(no)debug-(no)zts
比如:php20131226-nodebug-nozts
--prefix 用来指定php的安装目录
--with-apxs2 用来指定apxs2的所在目录
--enable-maintainer-zts 这个配置用来指定线程安全
--enable-debug 用来指定debug
debug-zts
./configure --prefix=/usr/local/php20131226-debug-zts --with-config-file-path=/usr/local/php20131226-debug-zts/etc --with-apxs2=/usr/local/apache/bin/apxs --with-bz2 --with-curl --enable-ftp --enable-sockets --disable-ipv6 --with-gd --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/local --enable-gd-native-ttf --with-iconv-dir=/usr/local --enable-mbstring --enable-calendar --with-gettext --with-libxml-dir=/usr/local --with-zlib --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql=mysqlnd --enable-dom --enable-xml --enable-fpm --with-libdir=lib64 --enable-bcmath --enable-debug --enable-maintainer-zts ;
debug-no-zts
./configure --prefix=/usr/local/php20131226-debug-no-zts --with-config-file-path=/usr/local/php20131226-debug-no-zts/etc --with-apxs2=/usr/local/apache/bin/apxs --with-bz2 --with-curl --enable-ftp --enable-sockets --disable-ipv6 --with-gd --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/local --enable-gd-native-ttf --with-iconv-dir=/usr/local --enable-mbstring --enable-calendar --with-gettext --with-libxml-dir=/usr/local --with-zlib --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql=mysqlnd --enable-dom --enable-xml --enable-fpm --with-libdir=lib64 --enable-bcmath --enable-debug
no-debug-zts
./configure --prefix=/usr/local/php20131226-no-debug-zts --with-config-file-path=/usr/local/php20131226-no-debug-zts/etc --with-apxs2=/usr/local/apache/bin/apxs --with-bz2 --with-curl --enable-ftp --enable-sockets --disable-ipv6 --with-gd --enable-gd-native-ttf --enable-mbstring --enable-calendar --with-gettext --with-libxml-dir=/usr/local --with-zlib --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql=mysqlnd --enable-dom --enable-xml --enable-fpm --with-libdir=lib64 --enable-bcmath --enable-maintainer-zts
no-debug-no-zts
./configure --prefix=/usr/local/php20131226-no-debug-no-zts --with-config-file-path=/usr/local/php20131226-no-debug-no-zts/etc --with-apxs2=/usr/local/apache/bin/apxs --with-bz2 --with-curl --enable-ftp --enable-sockets --disable-ipv6 --with-gd --enable-gd-native-ttf --enable-mbstring --enable-calendar --with-gettext --with-libxml-dir=/usr/local --with-zlib --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql=mysqlnd --enable-dom --enable-xml --enable-fpm --with-libdir=lib64 --enable-bcmath
这里发现一个问题:
如果指定了--with-apxs2,那么PHP线程安全性就根据apache的编译安装时的线程安全性来确定。
所以,当你在一台机子上编译某一版本的PHP的线程安全版本和非线程安全的版本时,不要指定--with-apxs2
编译安装
make install
编译安装完成,在/usr/local/的目录下就会产生php的编译产物
编译安装生成PHP扩展,需要和对应PHP版本一致
0.进入对应extension的目录
cd /path_to_extensions/
1.使用对应版本的php下的phpize
/usr/local/php对应版本/bin/phpize
2.配置,使用指定的php-config
./configure --with-php-config=/usr/local/php对应版本/bin/php-config
3.编译安装
make clean //注意:每次编译的时候,都需要
make install