- php編譯安裝的基本步驟
//首先要下載一個(gè)php的安裝包,例如:php-5.6.25.tar.gz,
tar zxvf php-5.6.25.tar.gz // 解壓php安裝包,得到一個(gè)php-5.6.25的文件夾
cd php-5.6.25
./configure //對php的安裝進(jìn)行配置,后面要加配置選項(xiàng)
# make && make install
//編譯安裝完成之后,需要從解壓后的文件夾中把php.ini-development
//或是 php.ini-production 重命名成php.ini 復(fù)制到php安裝文件中的相應(yīng)位置,
//可在phpinfo中查看 相應(yīng)位置.
// 把/usr/local/php/etc/php-fpm.conf.default 復(fù)制到當(dāng)前文件夾下,保存未php-fpm.conf
上面是php編譯安裝的基本流程,下面詳細(xì)介紹php的配置參數(shù).
- php各參數(shù)配置詳解
--prefix=/usr/local/php //指定 php 安裝目錄
--with-apxs2=/usr/local/apache/bin/apxs //整合apache搁拙,
//apxs功能是使用mod_so中的LoadModule指令甫男,
//加載指定模塊到 apache,要求 apache 要打開SO模塊
--with-config-file-path=/usr/local/php/etc //指定php.ini位置
--with-MySQL=/usr/local/mysql //mysql安裝目錄莹菱,對mysql的支持
--with-mysqli=/usr/local/mysql/bin/mysql_config
//mysqli擴(kuò)展技術(shù)不僅可以調(diào)用MySQL的存儲(chǔ)過程吓蘑、處理MySQL事務(wù)雁比,
//而且還可以使訪問數(shù)據(jù)庫工作變得更加穩(wěn)定盈魁。
--enable-safe-mode //打開安全模式
--enable-ftp //打開ftp的支持
--enable-zip //打開對zip的支持
--with-bz2 //打開對bz2文件的支持
--with-jpeg-dir //打開對jpeg圖片的支持
--with-png-dir //打開對png圖片的支持
--with-freetype-dir //打開對freetype字體庫的支持
--without-iconv //關(guān)閉iconv函數(shù)愿汰,各種字符集間的轉(zhuǎn)換
--with-libXML-dir //打開libxml2庫的支持
--with-XMLrpc //打開xml-rpc的c語言
--with-zlib-dir //打開zlib庫的支持
--with-gd //打開gd庫的支持
--enable-gd-native-ttf //支持TrueType字符串函數(shù)庫
--with-curl //打開curl瀏覽工具的支持
--with-curlwrappers //運(yùn)用curl工具打開url流
--with-ttf //打開freetype1.*的支持钦幔,可以不加了
--with-xsl //打開XSLT 文件支持枕屉,擴(kuò)展了libXML2庫 ,需要libxslt軟件
--with-gettext //打開gnu 的gettext 支持鲤氢,編碼庫用到
--with-pear //打開pear命令的支持搀擂,PHP擴(kuò)展用的
--enable-calendar //打開日歷擴(kuò)展功能
--enable-mbstring //多字節(jié),字符串的支持
--enable-bcmath //打開圖片大小調(diào)整,用到zabbix監(jiān)控的時(shí)候用到了這個(gè)模塊
--enable-sockets //打開 sockets 支持
--enable-exif //圖片的元數(shù)據(jù)支持
--enable-magic-quotes //魔術(shù)引用的支持
--disable-rpath //關(guān)閉額外的運(yùn)行庫文件
--disable-debug //關(guān)閉調(diào)試模式
--with-mime-magic=/usr/share/file/magic.mime //魔術(shù)頭文件位置
- CGI方式安裝才用的參數(shù):
--enable-fpm //打上PHP-fpm 補(bǔ)丁后才有這個(gè)參數(shù)卷玉,CGI方式安裝的啟動(dòng)程序
--enable-fastCGI //支持fastcgi方式啟動(dòng)PHP
--enable-force-CGI-redirect //重定向方式啟動(dòng)PHP
--with-ncurses //支持ncurses 屏幕繪制以及基于文本終端的圖形互動(dòng)功能的動(dòng)態(tài)庫
--enable-pcntl //freeTDS需要用到的哨颂,可能是鏈接mssql 才用到
--with-mcrypt //mcrypt算法的擴(kuò)展
--with-mhash //mhash算法的擴(kuò)展
//以上函數(shù)庫需要安裝
--with-gmp //應(yīng)該是支持一種規(guī)范
--enable-inline-optimization //優(yōu)化線程
--with-openssl //openssl的支持,加密傳輸時(shí)用到的
--enable-dbase //建立DBA 作為共享模塊
--with-pcre-dir=/usr/local/bin/pcre-config //perl的正則庫案安裝位置
--disable-dmalloc
--with-gdbm //dba的gdbm支持
--enable-sigchild
--enable-sysvsem
--enable-sysvshm
--enable-zend-multibyte //支持zend的多字節(jié)
--enable-mbregex
--enable-wddx
--enable-shmop
--enable-soap
- 注意事項(xiàng)
指定了--with-apxs2=/usr/local/apache/bin/apxs以后相种,就不要再激活--enable-fpm和--enable-fastCGI威恼,apxs是以php module的模式加載PHP的。
Mysql在編譯了Mysql開發(fā)library以后寝并,可以不用指定mysql的路徑箫措。
PHP編譯存在基礎(chǔ)的依賴的關(guān)系,編譯PHP首先需要安裝XML擴(kuò)展衬潦,因?yàn)閜hp5核心默認(rèn)打開了XML的支持斤蔓,其他的基礎(chǔ)庫,相應(yīng)需要:GD -> zlib, Png, Jpg, 如果需要支持其他镀岛,仍需要根據(jù)實(shí)際情況編譯擴(kuò)展庫附迷,ttf庫需要freetype庫的支持。
--enable-magic-quotes哎媚,是一個(gè)極其不推薦的參數(shù),當(dāng)然喊儡,如果你需要PHP為你做這些底下的工作拨与,實(shí)際上他也沒有很徹底的解決問題。
-
--with-openssl艾猜,需要openssl庫买喧。mysqli是MySQL團(tuán)隊(duì)提供的MySQL驅(qū)動(dòng),具有很多實(shí)用的功能和典型特征匆赃。不過他不是MySQL于PHP平臺(tái)最好的選擇淤毛,PDO被證實(shí),是一個(gè)簡易算柳、高并發(fā)性低淡,而且易于創(chuàng)建和回收的標(biāo)準(zhǔn)接口。不過PDO也經(jīng)歷了5.3以前的內(nèi)存溢出的問題,在5.3以后蔗蹋,在讀取Oracle的LOB資源時(shí)何荚,若不對內(nèi)存進(jìn)行限制,仍會(huì)內(nèi)存溢出猪杭。
如果是產(chǎn)品模式餐塘,好像pear、shmop皂吮、ftp等戒傻,都不推薦使用,他們要做的事情蜂筹,用C/C++需纳,用Java,甚至其他腳本語言狂票,都有很好很快速的選擇候齿,無需局限于使用PHP去實(shí)現(xiàn)。不熟悉的類庫和不常用的庫闺属,也不推薦使用慌盯。magic-quote、session.auto_start掂器、PHP服務(wù)器信息亚皂、PHP報(bào)錯(cuò)信息等在編譯完成后,應(yīng)該第一時(shí)間關(guān)閉国瓮,避免暴露服務(wù)器信息灭必。PHP對應(yīng)的Web Server模式,Module乃摹、fastcgi禁漓、fpm只需要一種即可,服務(wù)器不是你的試驗(yàn)田孵睬。fastcgi可以選擇Nginx和lighttpd播歼,其實(shí)Nginx也是使用lighttpd的spwan-fcgi進(jìn)行fcgi進(jìn)程管理的。fpm是使用PHP自身去管理多進(jìn)程掰读,有點(diǎn)類似一個(gè)后端代理秘狞。無論什么模式,在發(fā)布產(chǎn)品服務(wù)器蹈集,都應(yīng)該做進(jìn)程和線程調(diào)優(yōu)烁试,做足夠多的壓力測試,找出最好的進(jìn)程數(shù)組合拢肆。
選好一種PHP OPCode cache的擴(kuò)展减响,這個(gè)也是很重要的靖诗,linux 2.6核心下,fcgi下辩蛋,xcache有較好的實(shí)踐經(jīng)驗(yàn)呻畸,其他的在并發(fā)數(shù)增加以后,性能衰減嚴(yán)重悼院。
如果真的想體驗(yàn)伤为,寧可編譯多幾個(gè)PHP版本,也不要針對一個(gè)版本的PHP集合各種擴(kuò)展据途,適應(yīng)各種環(huán)境绞愚,這會(huì)讓把你自己逼進(jìn)窘境的。
- 需要單獨(dú)安裝的擴(kuò)展
- gd庫颖医。
- ming的擴(kuò)展位衩。
- mhash和mcrypt的擴(kuò)展。
詳細(xì)選項(xiàng)上熔萧,除了上述的安裝簡介外糖驴,也可以在編譯時(shí)加入其它的選項(xiàng)。
apache 模塊
語法: --with-apache=DIR
說明: 用本選項(xiàng)可以讓 **PHP
** 以apache的模塊方式使用佛致,DIR 的字符串可以是 /usr/local/apache 或其它安裝apache的目錄
范例: --with-apache=/var/lib/apache
fhttpd 服務(wù)器模塊
語法: --with-fhttpd=DIR
說明: 若使用 fttpd 服務(wù)器贮缕,可以使用本指令編譯 PHP。用模塊的方式配合 fttpd 服務(wù)器俺榆,可以有較好的效率感昼。
Adabas D 數(shù)據(jù)庫
語法: --with-adabas=DIR
說明: 數(shù)據(jù)庫系統(tǒng)為 Adabas D 數(shù)據(jù)庫時(shí)需要加本選項(xiàng)。關(guān)于 Adabas D 數(shù)據(jù)庫的細(xì)節(jié)罐脊,可以參考 http://www.adabas.com定嗓。
范例: --with-adabas=/usr/local/adabasd
dBase 資料表
語法: --with-dbase
說明: 只要加本選項(xiàng),不用其它的參數(shù)或函數(shù)庫萍桌,PHP 就會(huì)讓系統(tǒng)有存取 dBase 資料表的功能宵溅。
filePro 數(shù)據(jù)庫
語法: --with-filepro
說明: 不用指定數(shù)據(jù)庫路徑及其它函數(shù)庫等,可以讀取 filePro 數(shù)據(jù)庫 (唯讀)上炎。
mSQL 數(shù)據(jù)庫
語法: --with-msql=DIR
說明: 提供存取 mSQL 數(shù)據(jù)庫层玲。更多的細(xì)節(jié)請參考 mSQL 的網(wǎng)站 http://www.hughes.com.au。
范例: --with-msql=/usr/local/Hughes
MySQL 數(shù)據(jù)庫
語法: --with-mysql=DIR
說明: 提供存取 MySQL 數(shù)據(jù)庫反症。更多的細(xì)節(jié)請參考 MySQL 的網(wǎng)站 http://www.tcx.se。
范例: --with-mysql=/usr/local/mysql
iODBC 數(shù)據(jù)庫裝置
語法: --with-iodbc=DIR
說明: 提供 ODBC 數(shù)據(jù)庫裝置畔派,用來存取后端數(shù)據(jù)庫铅碍。更多的細(xì)節(jié)請參考 iODBC 的網(wǎng)站 http://www.iodbc.org。
范例: --with-iodbc=/usr/local/iodbc
OpenLink ODBC 數(shù)據(jù)庫裝置
語法: --with-openlink=DIR
說明: 使用 OpenLink ODBC 數(shù)據(jù)庫裝置线椰,用來存取后端數(shù)據(jù)庫胞谈。更多的細(xì)節(jié)請參考 OpenLink ODBC 的網(wǎng)站 http://www.openlinksw.com。
范例: --with-openlink=/usr/local/openlink
Oracle 數(shù)據(jù)庫
語法: --with-oracle=DIR
說 明: 使用 Oracle 數(shù)據(jù)庫。Oracle 的版本要在 7.3 版以上烦绳。您也可以在 PHP 程序中使用環(huán)境變量 ORACLE_HOME 來指定 Oracle 的路徑卿捎。更多有關(guān) Oracle 的信息請參考 Oracle 的網(wǎng)站 http://www.oracle.com。
范例: --with-oracle=/export/app/oracle/product/7.3.2
PostgreSQL 數(shù)據(jù)庫
語法: --with-pgsql=DIR
說 明: 使用 PostgreSQL 數(shù)據(jù)庫径密。更多有關(guān) PostgreSQL 的信息請參考 PostgreSQL 的網(wǎng)站 http://www.postgreSQL.org 或臺(tái)灣的 Mirror 站 http://postgresql.ccit.edu.tw午阵。
范例: --with-pgsql=/usr/local/pgsql
Solid 數(shù)據(jù)庫
語法: --with-solid=DIR
說明: 使用 Solid 數(shù)據(jù)庫。更多有關(guān) Solid 的信息請參考 Solid 的網(wǎng)站 http://www.solidtech.com享扔。
范例: --with-solid=/usr/local/solid
Sybase 數(shù)據(jù)庫
語法: --with-sybase=DIR
說明: 使用 Sybase 數(shù)據(jù)庫底桂。更多有關(guān) Sybase 的信息請參考 Sybase 的網(wǎng)站 http://www.sybase.com。
范例: --with-sybase=/home/sybase
Sybase-CT 數(shù)據(jù)庫
語法: --with-sybase-ct=DIR
說明: 使用 Sybase-CT 數(shù)據(jù)庫惧眠。
范例: --with-sybase-ct=/home/sybase
Velocis 數(shù)據(jù)庫
語法: --with-velocis=DIR
說明: 使用 Velocis 數(shù)據(jù)庫籽懦。有關(guān) Velocis 數(shù)據(jù)庫的進(jìn)一步資料請參考 Raima 公司的網(wǎng)站 http://www.raima.com。
范例: --with-velocis=/usr/local/velocis
自訂 ODBC 數(shù)據(jù)庫驅(qū)動(dòng)程序
語法: --with-custom-odbc=DIR
說明: 使用自訂的 ODBC 函數(shù)庫氛魁。當(dāng)然暮顺,在使用本方式時(shí)要指定 CUSTOM_ODBC_LIBS 及 CFLAGS 變量。例如在 QNX 機(jī)器上使用 Sybase **SQL
** Anywhere 時(shí)可能要配置系統(tǒng)環(huán)境變量 CFLAGS=-DODBC_QNX秀存、LDFLAGS=-lunix 及 CUSTOM_ODBC_LIBS="-ldblib -lodbc"捶码,并要在 PHP 配置加入 --with-custom-odbc=/usr/lib/sqlany50
范例: --with-custom-odbc=/usr/local/odbc
不使用 ODBC 數(shù)據(jù)庫驅(qū)動(dòng)程序
語法: --disable-unified-odbc
說 明: 使用本選項(xiàng)將使所有的 ODBC 數(shù)據(jù)庫驅(qū)動(dòng)程序不作用。本選項(xiàng)不用指定路徑应又,而受本選項(xiàng)影響的選項(xiàng)有 --with-iodbc宙项、--with-solid、--with-adabas株扛、--with-velocis 及 --with-custom-odbc尤筐。
LDAP 目錄協(xié)議
語法: --with-ldap=DIR
說明: 若要使用目錄協(xié)議 (Lightweight Directory Access Protocol, LDAP) 則必須要打開本選項(xiàng)。有關(guān) LDAP 的細(xì)節(jié)洞就,可以參考 RFC 文件的 RFC1777 及 RFC1778盆繁。
范例: --with-ldap=/usr/local/ldap.
mcrypt 編碼函數(shù)庫
語法: --with-mcrypt=DIR
說明: 當(dāng)安裝了 mcrypt 函數(shù)庫后,可在編譯 PHP 時(shí)加入本選項(xiàng)旬蟋,讓程序可以使用編解碼功能油昂。
范例: --with-mcrypt=/usr/local/include
Sys V 信號
語法: --enable-sysvsem
說明: 要使用 SysV 的信號 (semaphores) 機(jī)制,則要打開本選項(xiàng)倾贰。
XML 支持
語法: --with-xml
說明: 打開本選項(xiàng)可以支持 James Clark's 寫的 XML 解析程序庫冕碟。
維護(hù)模式
語法: --enable-maintainer-mode
說明: 本選項(xiàng)一般不會(huì)打開,除非是 PHP 開發(fā)人員比較有用匆浙。
正則表達(dá)式程序庫
語法: --with-system-regex
說明: 若您需要額外的正則表達(dá)式功能安寺,可以加入本選項(xiàng)。
PHP 配置文件
語法: --with-config-file-path=DIR
說明: 用來指定 php3.ini 或 php4.ini 的路徑首尼,供 PHP 初始化時(shí)使用挑庶。
范例: --with-config-file-path=/usr/local/lib
PHP 執(zhí)行路徑
語法: --with-exec-dir=DIR
說明: 有時(shí)為了系統(tǒng)的安全性考慮言秸,會(huì)指定 PHP 程序一定要在哪個(gè)目錄執(zhí)行。
范例: --with-exec-dir=/usr/local/bin
調(diào)試模式
語法: --enable-debug
說明: 本選項(xiàng)一般不會(huì)使用迎捺,除非在開發(fā) PHP 程序時(shí)比較有用举畸。它可以顯示額外的錯(cuò)誤信息。
安全模式
語法: --enable-safe-mode
說明: 默認(rèn)值是打開的凳枝,可以對系統(tǒng)安全提供比較多的保護(hù)抄沮。
變量追蹤
語法: --enable-track-vars
說明: 讓 PHP 能 追蹤 HTTP_GET_VARS、HTTP_POST_VARS 及 HTTP_COOKIE_VARS 三個(gè)變量范舀,一般是打開的合是。
自動(dòng)加引入字符
語法: --enable-magic-quotes
說明: 可讓程序在執(zhí)行時(shí)自動(dòng)加入反斜線的引入字符。
打開調(diào)試器
語法: --enable-debugger
說明: 打開內(nèi)建的 PHP 調(diào)試器锭环。目前本功能還在實(shí)驗(yàn)階段聪全,尚未成熟。
取消路徑 (discard path)
語法: --enable-discard-path
說明: 打開這個(gè)選項(xiàng)辅辩,**用戶
**就不能透過瀏覽器讀取 .htaccess 等和系統(tǒng)安全相關(guān)的文件难礼。
高精確度數(shù)學(xué)函數(shù)
語法: --enable-bcmath
說明: 打開高精確度函數(shù)。必須要先安裝本函數(shù)庫玫锋,本選項(xiàng)方有效蛾茉。
強(qiáng)制 CGI 重定向
語法: --enable-force-cgi-redirect
范 例: 若使用 CGI VERSION 模式來執(zhí)行 PHP 的設(shè),打開本選項(xiàng)會(huì)增加安全性撩鹿。例如用戶讀 http://my.host/cgi-bin/php/secret/doc.html 遇到比較了解 PHP 系統(tǒng)的黑客級用戶可能會(huì)自已輸入以下網(wǎng)址 http://my.host/secret/doc.html 來讀取相關(guān)信息谦炬。若 PHP 和 Apache 編譯在一起,讓 PHP 變成 Apache 的一部份节沦,則不需要加入本選項(xiàng)键思。
不使用短的標(biāo)記
語法: --disable-short-tags
說明: 配置本選項(xiàng)后,PHP 的程序就不能使用短的標(biāo)記甫贯,一定要用的長標(biāo)記吼鳞。
引入遠(yuǎn)端檔寧
語法: --enable-url-includes
說明: 配置本選項(xiàng)可讓 PHP 程序可以引入 (include) 遠(yuǎn)端的 HTTP 或 FTP 服務(wù)器中的文件。
關(guān)閉語法效果
語法: --disable-syntax-hl
說明: 使用本選項(xiàng)會(huì)關(guān)閉 PHP 語法的彩色效果叫搁。
函數(shù)庫路徑
語法: CPPFLAGS=-IDIR 及 LDFLAGS=-LDIR
說明: 若 PHP 在安全或編譯所需的函數(shù)庫在值得的路徑赔桌,需要加入本選項(xiàng),LDFLAGS 表示函數(shù)庫的路徑渴逻,CPPFLAGS 表示標(biāo)頭文件的路徑疾党。
范例: LDFLAGS=-L/my/lib/dir CPPFLAGS=-I/my/include/dir ./configure
- 配置項(xiàng)代碼
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php
--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-gd --with-openssl --with-xmlrpc
--with-curl --with-imap-ssl --with-freetype-dir --enable-fpm
--enable-pcntl --with-mcrypt --with-mhash