php编译安装详解(二)

      最近做的一个项目要部署到阿里云的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  command not found  或者不是指定的内置命令  请切换到你的php安装目录的bin目录下执行
./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要开启此扩展需要指定此扩展库的路径  


对应的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扩展 ##

zlib是提供数据压缩用的函式库

yum安装命令

yum install zlib zlib-devel

源码安装 以1.2.5版本为例

<strong>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</strong>

编译参数

--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

这里的makefile不是用./configure生成,而是直接从scripts/里拷一个

注:gd库将需要这个依赖包 详见gd库的安装



## libjpeg扩展 ##

处理jpg图片用的  不多说

yum安装

yum install libjpeg libjpeg-devel

源码安装
<strong>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</strong>

这里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库将需要这个依赖包 详见gd库的安装


## GD 扩展 ##

GD库 是php处理图形的扩展库 GD库提供了一系列用来处理图片的API 使用GD库可以处理图片 或者生成图片 在网站上GD库通常用来生成缩略图 或者用来对图片加水印 或者用来生成汉字验证码 或者对网站数据生成报表等

gd库依赖4个额外库  分别是 zlib libpng libjpeg freetype  要先安装这几个包以后才能安装gd      yum安装除外


yum安装
yum install php-gd
yum安装的会自己去解决依赖关系

源码安装 需要指定4个依赖库位置
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

## curl 扩展 ##
curl是利用URL语法在命令行方式下工作的开源文件传输工具.

yum安装:
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

编译时指定参数 另外比较新版本的php将curl包含在源码包中 ext目录下  安装时可以直接
--with-curl 安装
源码或者一些比价古老版本的需要使用

--with-curl= 指定curl安装路径


未完 持续整理中...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章