编译环境:centos7,准备好需要的源码包,这里使用包编译如下:
#PHP的编译很麻烦,主要在于需要添加很多库,这里只是按照个人添加部分库
curl-7.54.0.tar.gz:./configure --prefix=/usr/local/dev/curl-7.54.0
libxml2-2.9.4.tar.gz:./configure --prefix=/usr/local/dev/xml2-2.9.4
#需要python.h,一般系统都自带python了,所以可以选yum install -y python-devel或者重新编译一个python~
zlib-1.2.11.tar.gz:./configure
#编译在其他地方部分库使用时提示找不到
libgd-2.2.4.tar.gz:./configure --prefix=/usr/local/dev/gd-2.2.4
libpng-1.6.29.tar.gz:./configure --prefix=/usr/local/dev/png-1.6.29 --with-zlib
libiconv-1.15.tar.gz:./configure --prefix=/usr/local/dev/iconv-1.15
jpegsrc.v9b.tar.gz:./configure --prefix=/usr/local/dev/jpeg-v9b
freetype-2.7.tar.gz:./configure --prefix=/usr/local/dev/freetype-2.7
php-5.6.30.tar.gz:
./configure --prefix=/usr/local/php-5.6.30
--with-config-file-path=/usr/local/php-5.6.30/etc/
#编译完成后复制源码包内的php.ini-development或php.ini-production到这个目录并改名为php.ini,用于配置php
--with-curl=/usr/local/dev/curl-7.54.0
--with-gd=/usr/local/dev/gd-2.2.4
--with-iconv=/usr/local/dev/iconv-1.15
--with-zlib
#之前编译在/usr下所以不用指定目录了
--with-libxml-dir=/usr/local/dev/xml2-2.9.4
--with-png-dir=/usr/local/dev/png-1.6.29
--with-jpeg-dir=/usr/local/dev/jpeg-v9b
--with-freetype-dir=/usr/local/dev/freetype-2.7
......
#有的参数路径指定有"-dir",具体可以使用./configure --help | grep -i "你要的参数" 查看help文档
--enable-fpm #nginx支持
--with-apxs2=/apache目录/bin/apxs #apache支持
--with-mysql=/mysql目录 #mysql支持(本地mysql)
--with-mysqli=/mysql目录/bin/mysql_config
--with-pdo-mysql=/mysql目录
--enable-mysqlnd #mysql支持(远程mysql)
--with-mysql=mysqlnd
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
#开启部分功能(按照实际情况)
--enable-zip #zip支持
--enable-ftp #ftp支持
--enable-sockets #socket支持
......
一些功能的介绍[链接]文献
编译安装php之后,如果需要添加新的模块,可以使用如下方法:
①执行php -v查看版本号,使用对应的源码包进入源码包/ext目录下,该目录下有很多以模块命名的目录,选择需要新增的模块进入执行/php路径/bin/phpize。
②可以看到执行之后出现很多新的文件,其中包括configure,还是在这个目录下执行./configure --with-php-config=/php安装路径/bin/php-config && make clean && make && make install (使用make clean可以避免先前编译导致报错)。
③执行之后看到回显了一个路径[类似这样的格式:/php路径/lib/php/extensions/no-debug-non-zts-*],切换到该目录下复制对应的模块.so文件到/php路径/etc/ext/下。
④然后修改/php路径/etc/php.ini[这个路径跟编译安装时候--with-config-file-path有关],修改extension_dir="/php路径/etc/ext"(若不存在就添加上去)和添加 extension=新模块.so
⑤最后使用php -m |grep 模块查看是否新增成功