./configure --enable-curl
./configure --with-curl
1.enable和with參數指令有什麼不同?
2.如何將擴充編譯進php,而不是以.so動態擴展形式存在?
3.哪些擴充是php官方支援的呢?是php源碼包ext目錄下的就是php官方支援的麼?可以編譯進php的?
4.使用什麼指令將官方支援的擴充編譯進php?
如果我需要設定memcached拓展該如何做?具體怎麼加模組我已經知道,我現在想知道的是能不能再編譯php的時候就直接加上?會不會自動幫我下載需要的第三方安裝包?
如果需要支援laravel5.5,我安裝php的時候需要如何編譯php?
ringa_lee2017-05-16 13:05:51
--prefix=/usr/local/php
--with-apxs2=/usr/local/apache/bin/apxs
--with-config-file-path=/usr/local/php/etc
--with-MySQL=/usr/local/mysql
--with-mysqli=/usr/local/mysql/bin/mysql_config
--enable-safe-mode
--enable-ftp
--enable-zip
--with-bz2
--with-jpeg-dir
配置 | 說明 |
---|---|
--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 | 魔術頭檔位置 |
配置 | 說明 |
---|---|
--enable-fpm | 打上PHP-fpm 補丁後才有這個參數,CGI方式安裝的啟動程式 |
--enable-fastCGI | 支持fastcgi方式啟動PHP |
--enable-force-CGI-redirect | 重定向方式啟動PHP |
--with-ncurses | 支援ncurses 螢幕繪製以及基於文字終端的圖形互動功能的動態庫 |
--enable-pcntl | freeTDS需要用到的,可能是連結mssql 才用到 |
配置 | 說明 |
---|---|
--with-mcrypt | 演算法 |
--with-mhash | 演算法
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集合各種擴展,適應各種環境,這會讓把你自己逼進窘境的