最近做的一个项目要部署到阿里云的ECS上,系统为centos6.5,部署上去以后以后发现项目无法运行,查看了下php的版本,发现是5.3的,这个也是阿里云的yum源中的php版本,不支持新项目中 [ ]定义数组的方式,修改代码代价太大,所以就考虑着替换高版本php,去官网看了下,发现最新版本为5.6.25,一直也没机会整理一下,借此次机会,整理一下编译的步骤.(比较多,建议ctrl+s弄下来慢慢看) 如仅仅是想查询具体的编译安装方式 或者扩展安装 可以直接拉到最下面去 本文将会持续整理
下面是传送门
第一部分 基本参数详解 >>传送门<<
第二部分 内置扩展与依赖包详解 >>传送门<<
第三部分 三方扩展详解
第四部分 常用安装步骤
注意
本文比较长,所列出的绝大部份东西实际学习中基本不会接触 为了方便学习 将按使用程度标出 红色标注的区域为重要部分 绿色为可选
需要说明的是 --enable --disable --with --without参数 开关扩展都是通过这几个参数指定的 后边我会详细讲解
第二部分 扩展与依赖包
说明:php的源码包中包含了内置扩展 就在安装包内的ext文件夹中 有兴趣的可以自己去看下
在编译时直接指定参数即可 但是部分扩展需要依赖与额外的第三方依赖包 比如最常见的gd(图像处理)扩展等.
如果你已经安装过php 想查看你安装过程中指定安装了哪些扩展 可以使用如下命令
php -i | grep configure
./php -i | grep configure
例:输出如下
Configure Command => './configure' '--prefix=/usr/local/php' '--with-config-file-path=/etc/php'
'--enable-fpm' '--enable-pcntl' '--enable-mysqlnd' '--enable-opcache' '--enable-sockets'
'--enable-sysvmsg' '--enable-sysvsem' '--enable-sysvshm' '--enable-shmop'
'--enable-zip' '--enable-ftp' '--enable-soap' '--enable-xml' '--enable-mbstring'
'--disable-rpath' '--disable-debug' '--disable-fileinfo' '--with-mysql=mysqlnd'
'--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd' '--with-pcre-regex'
'--with-iconv' '--with-zlib' '--with-mcrypt' '--with-gd' '--with-openssl'
'--with-mhash' '--with-xmlrpc' '--with-curl' '--with-imap-ssl'
然后就可以查看你是否安装了指定的扩展 有些参数是默认开启的 所以你你编译时可以不去指定
## 扩展选项设置 ##
此处是一些内置扩展的总体配置 不熟悉的话请直接忽略
--with-EXTENSION=shared,[path] 将扩展安装为共享方式 第二个参数指定扩展的路径
--disable-all 禁用所有扩展
--with-regex= 使用正则表达式安装指定扩展 这个一般别指定哈 除非 算了 没有除非
## 无需依赖的扩展 ##
以下内置扩展无需额外的依赖包 可以直接通过编译参数指定是否安装 前面说过 有些扩展时默认开启的 但有些需要你自己去手动指定开启状态
--with-pcre-regex
开启正则表达式支持 可以开启preg系类函数 php 5.3.0 起这个扩展不能被禁用 因此它总是存在的 但它仍然可以通过--with-pcre-regex=dir 指定 一个外部的 PCRE 库进行编译
--enable-mbstring
在你操作(trim、split、splice 等等)多字节编码的字符串的时候,由于在这种编码方案下,两个或多个连续字节可能只表达了一个字符,所以你需要使用专门的函数 比如你trim一个中文字符串 mbstring 提供了针对多字节字符串的函数 能够帮你处理PHP中的多字节编码
--enable-bcmath
开启高精度数学函数库 如果你的项目中涉及精度要求极高的运算 请务必开启此扩展 具体的我不在此做过多详述
--with-jpeg-dir
打开对jpeg图片的支持 默认开启
--with-png-dir
打开对png图片的支持 默认开启
--enable-zip
打开对zip的支持 默认开启
--enable-ftp
打开ftp的支持 默认开启
--with-bz2
打开对bz2文件的支持 默认开启
--without-iconv
关闭iconv函数,字符集间的转换 默认关闭
## 需要外部依赖包的扩展 ##
## libxml2 扩展##
libxml2是一个c语言编写的xml解析器 用来解析 处理 生成xml 如果你希望你的php可以处理xml 那么你需要安装这个依赖文件
yum安装命令:
yum install libxml2 libxml2-devel
我拿2.2.x版本为例 源码安装:
tar -zxvf libxml2-2.6.20.tar.gz
cd libxml2-2.6.20
./configure --prefitx=/usr/local
make && make install
对应的php编译参数
--disable-libxml 禁止libxml2扩展
--enable-libxml 开始libxml2扩展支持
--with-libxml-dir=dir 开启libxml2的支持 dir参数为对应的libxml依赖库的安装路径 如果是yum安装或者未指定安装路径则不需要制定此参数
## openssl扩展 ##
openssl是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议.常见的比如https加密 git密钥生成 这个扩展库在大多数liunx内核系统上都是自带的 可以使用命令查询下自己有没有安装
openssl version -a
如果没有
yum安装命令
yum install openssl openssl-devel
源码安装 建议安装两次,shared 作用是生成动态连接库
wget ftp://ftp.openssl.org/source/openssl-1.0.0c.tar.gz
tar -zxf openssl-1.0.0c.tar.gz
cd openssl-1.0.0c/
./config --prefix=/usr/local --openssldir=/usr/local/ssl
make && make install
./config shared --prefix=/usr/local --openssldir=/usr/local/ssl
make clean
make && make install
zlib是提供数据压缩用的函式库
yum安装命令
yum install zlib zlib-devel
源码安装 以1.2.5版本为例
wget http://zlib.net/zlib-1.2.5.tar.gz
tar -zxf zlib-1.2.5.tar.gz
cd zlib-1.2.5/
./configure --prefix=/usr/local
make && make install
编译参数
--with-zlib=dir 指定zlib的安装路径
--with-zlib-dir=dir 与上述作用相同
注:gd库将需要这个依赖包 详见gd库的安装
以下3个扩展都不是php所需的包 但由于php的gd扩展需要依赖于这3个包 所以也就附上了
## libpng扩展 ##
如名,这个扩展是用来处理png图片的
yum安装
yum install libpng libpng-devel
源码安装
tar -zxvf libpng-1.2.18.tar.gz
cd libpng-1.2.18
cp scripts/makefile.linux makefile
make
make install
注:gd库将需要这个依赖包 详见gd库的安装
## libjpeg扩展 ##
处理jpg图片用的 不多说
yum安装
yum install libjpeg libjpeg-devel
tar -zxvf jpegsrc.v6b.tar.gz
cd jpeg-6b/
./configure --prefix=/usr/local/jpeg6 --enable-shared
cp /usr/bin/libtool ./
mkdir /usr/local/man/man1
make
mkdir /usr/local/jpeg6
mkdir -p /usr/local/jpeg6/include
mkdir -p /usr/local/jpeg6/lib
mkdir -p /usr/local/jpeg6/bin
mkdir -p /usr/local/jpeg6/man/man1
make install-lib
make install
这里configure一定要带--enable-shared参数 不然不会生成共享库这个jpeg软件一般默认安装 不指定路径的话 应该很顺利的 但是如果指定安装目录后 就需要我们手动创建很多目录
注:gd库将需要这个依赖包 详见gd库的安装
## freetype扩展 ##
FreeType是一个完全开源的 可扩展 可定制且可移植的字体引擎 它提供统一的接口来访问多种字体格式文件
yum安装
yum install freetype freetype-devel
源码安装
tar -zxvf freetype-2.4.8.tar.gz
cd freetype-2.4.8
./configure --prefix=/usr/local/freetype
make
make install
## GD 扩展 ##
yum install php-gd
yum安装的会自己去解决依赖关系
tar zxvf gd-2.0.35.tar.gz
cd gd-2.0.35
./configure
--prefix=/usr/local/gd
--with-zlib=/usr/local/zlib/
--with-png --with-freetype=/usr/local/freetype/
--with-jpeg=/usr/local/jpeg6/
make && make install
--with-gd
yum install curl libcurl-devel
wget http://curl.haxx.se/download/curl-7.17.1.tar.gz
tar -zxf curl-7.17.1.tar.gz
cd curl-7.17.1
./configure
make
make install
--with-curl= 指定curl安装路径
未完 持续整理中...