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安裝路徑


未完 持續整理中...

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