php編譯參數

PHP安裝

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --without-pear --with-zlib --enable-pdo --with-pdo-mysql --with-mysql 
#mysqli擴展技術不僅可以調用MySQL的存儲過程、處理MySQL事務,而且還可以使訪問數據庫工作變得更加穩定。 
make ZEND_EXTRA_LIBS='-liconv' 
make install  


--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擴展技術不僅可以調用MySQL的存儲過程、處理MySQL事務,而且還可以使訪問數據庫工作變得更加穩定。 

--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   關閉iconv函數,種字符集間的轉換 

--with-libXML-dir   打開libxml2庫的支持 

--with-XMLrpc    打開xml-rpc的c語言 

--with-zlib-dir   打開zlib庫的支持 

--with-gd    打開gd庫的支持 

--enable-gd-native-ttf   支持TrueType字符串函數庫 

--with-curl    打開curl瀏覽工具的支持 

--with-curlwrappers    運用curl工具打開url流 

--with-ttf     打開freetype1.*的支持,可以不加了 

--with-xsl     打開XSLT 文件支持,擴展了libXML2庫 ,需要libxslt軟件 

--with-gettext     打開gnu 的gettext 支持,編碼庫用到 

--with-pear    打開pear命令的支持,PHP擴展用的 

--enable-calendar    打開日曆擴展功能 

--enable-mbstring    多字節,字符串的支持 

--enable-bcmath    打開圖片大小調整,用到zabbix監控的時候用到了這個模塊

--enable-sockets     打開 sockets 支持

--enable-exif    圖片的元數據支持 

--enable-magic-quotes    魔術引用的支持 

--disable-rpath    關閉額外的運行庫文件 

--disable-debug    關閉調試模式 

--with-mime-magic=/usr/share/file/magic.mime      魔術頭文件位置


CGI方式安裝才用的參數

--enable-fpm                       

打上PHP-fpm 補丁後纔有這個參數,CGI方式安裝的啓動程序



--enable-fastCGI                   

支持fastcgi方式啓動PHP



--enable-force-CGI-redirect        

重定向方式啓動PHP



--with-ncurses                     

支持ncurses 屏幕繪製以及基於文本終端的圖形互動功能的動態庫

--enable-pcntl                     freeTDS需要用到的,可能是鏈接mssql 纔用到


mhash和mcrypt算法的擴展

--with-mcrypt                     算法

--with-mhash                      算法

以上函數庫需要安裝




--with-gmp  應該是支持一種規範

--enable-inline-optimization  優化線程

--with-openssl                     openssl的支持,加密傳輸時用到的

--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的多字節

--enable-mbregex

--enable-wddx

--enable-shmop

--enable-soap

指定了--with-apxs2=/usr/local/apache/bin/apxs以後,就不要再激活--enable-fpm和--enable-fastCGI,apxs是以php module的模式加載PHP的。

Mysql在編譯了Mysql開發library以後,可以不用指定mysql的路徑。

PHP編譯存在基礎的依賴的關係,編譯PHP首先需要安裝XML擴展,因爲php5核心默認打開了XML的支持,其他的基礎庫,相應需要:

GD -> zlib, Png, Jpg, 如果需要支持其他,仍需要根據實際情況編譯擴展庫,ttf庫需要freetype庫的支持。

--enable-magic-quotes,是一個極其不推薦的參數,當然,如果你需要PHP爲你做這些底下的工作,實際上他也沒有很徹底的解決問題。

--with-openssl,需要openssl庫。

mysqli是MySQL團隊提供的MySQL驅動,具有很多實用的功能和典型特徵。不過他不是MySQL於PHP平臺最好的選擇,PDO被證實,是一個簡易、高併發性,而且易於創建和回收的標準接口。不過PDO也經歷了5.3以前的內存溢出的問題,在5.3以後,在讀取Oracle的LOB資源時,若不對內存進行限制,仍會內存溢出。

如果是產品模式,好像pear、shmop、ftp等,都不推薦使用,他們要做的事情,用C/C++,用Java,甚至其他腳本語言,都有很好很快速的選擇,無需侷限於使用PHP去實現。不熟悉的類庫和不常用的庫,也不推薦使用。magic-quote、session.auto_start、PHP服務器信息、PHP報錯信息等在編譯完成後,應該第一時間關閉,避免暴露服務器信息。

PHP對應的Web Server模式,Module、fastcgi、fpm只需要一種即可,服務器不是你的試驗田。fastcgi可以選擇Nginx和lighttpd,其實Nginx也是使用lighttpd的spwan-fcgi進行fcgi進程管理的。fpm是使用PHP自身去管理多進程,有點類似一個後端代理。無論什麼模式,在發佈產品服務器,都應該做進程和線程調優,做足夠多的壓力測試,找出最好的進程數組合。

選好一種PHP OPCode cache的擴展,這個也是很重要的,linux 2.6核心下,fcgi下,xcache有較好的實踐經驗,其他的在併發數增加以後,性能衰減嚴重。

如果真的想體驗,寧可編譯多幾個PHP版本,也不要針對一個版本的PHP集合各種擴展,適應各種環境,這會讓把你自己逼進窘境的。

 

編譯擴展庫:

/usr/local/php/bin/phpize

./configure  --with-php-config=/usr/local/php/bin/php-config

make

make install

ln -s ../ext/sockets/modules/sockets.so sockets.so 建立so動態鏈接庫的軟連接。

編譯php:


./configure --prefix=/usr/local/php --with-curl=/usr/local/curl --enable-mbstring --enable-shmop --enable-sysvsem --enable-sysvshm --enable-sysvmsg --with-mysql=/usr/local/mysql --with-mysqli=/usr/bin/mysql_config  --enable-sockets 

make

make install


which php確保php是最新的,可以建立軟鏈接。


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