搜尋

首頁  >  問答  >  主體

linux下php編譯的時候./configure如何設定?

./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?

迷茫迷茫2812 天前716

全部回覆(1)我來回復

  • ringa_lee

    ringa_lee2017-05-16 13:05:51

    指定 php 安裝目錄

    --prefix=/usr/local/php

    整合 apache,apxs功能是使用mod_so中的LoadModule指令,載入指定模組到 apache,要求 apache 要開啟SO模組

    --with-apxs2=/usr/local/apache/bin/apxs

    指定php.ini位置

    --with-config-file-path=/usr/local/php/etc               

    mysql安裝目錄,對mysql的支援

    --with-MySQL=/usr/local/mysql

    mysqli擴充技術不僅可以呼叫MySQL的預存程序、處理MySQL事務,還可以讓存取資料庫工作變得更穩定。

    --with-mysqli=/usr/local/mysql/bin/mysql_config            

    開啟安全模式

    --enable-safe-mode    

    打開ftp的支援

    --enable-ftp    

    開啟對zip的支援

    --enable-zip    

    開啟對bz2檔案的支援

    --with-bz2            

    開啟對jpeg圖片的支援

    --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 魔術頭檔位置

    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 | 演算法

    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集合各種擴展,適應各種環境,這會讓把你自己逼進窘境的

    回覆
    0
  • 取消回覆