PHP編譯安裝系列大全

PHP編譯安裝系列

徐亮偉, 江湖人稱標杆徐。多年互聯網運維工作經驗,曾負責過大規模集羣架構自動化運維管理工作。擅長Web集羣架構與自動化運維,曾負責國內某大型電商運維工作。
個人博客"徐亮偉架構師之路"累計受益數萬人。
筆者Q:552408925、572891887

PHP5.6編譯安裝

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel -y
yum install freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel -y
yum -y install libmcrypt-devel mhash mcrypt

mkdir -p /soft/package/src
cd /soft/package/src
tar zxf php-5.6.23.tar.gz 
cd php-5.6.23
./configure --prefix=/soft/php-fastcgi5.6.23 \
--with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql=mysqlnd \
--with-jpeg-dir --with-png-dir --with-zlib --enable-xml  \
--with-libxml-dir --with-curl --enable-bcmath --enable-shmop \
--enable-sysvsem  --enable-inline-optimization --enable-mbregex \
--with-openssl --enable-mbstring --with-gd --enable-gd-native-ttf \
--with-freetype-dir=/usr/lib64 --with-gettext=/usr/lib64 \
--enable-sockets --with-xmlrpc --enable-zip --enable-soap \
--disable-debug --enable-opcache --enable-zip \
--with-config-file-path=/usr/local/php-fastcgi/etc \
--enable-fpm --with-fpm-user=www --with-fpm-group=www
make && make install

內存小於一個G,在最後加上。
--disable-fileinfo

cd /application/tools/php/ext
/application/php/bin/phpize
./configure --with-php-config=/application/php/bin/php-config --with-pdo-mysql=/application/mysql
make && make install

PHP5.5編譯安裝

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel -y
yum install freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel -y
yum -y install libmcrypt-devel mhash mcrypt

mkdir -p /soft/package/src
cd /soft/package/src
wget  http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar zxf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv
make
make install
cd ../

cd /soft/package/src
tar xf php-5.5.38.tar.gz
cd php-5.5.38
./configure --prefix=/soft/php5.5.38 --with-mysql=mysql \
--with-iconv-dir=/usr/local/libiconv --with-freetype-dir \
--with-jpeg-dir --with-png-dir --with-zlib \
--with-libxml-dir=/usr --enable-xml --disable-rpath \
--enable-bcmath --enable-shmop --enable-sysvsem \
--enable-inline-optimization --with-curl  --enable-mbregex \
--enable-fpm --enable-mbstring --with-mcrypt --with-gd \
--enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl \
--enable-sockets --with-xmlrpc --enable-zip --enable-soap \
--enable-short-tags --enable-static --with-xsl \
--with-fpm-user=www --with-fpm-group=www --enable-ftp --enable-opcache \
&& make && make install

ln -s /soft/mysql/lib/libmysqlclient.so.18 /usr/lib64/ 
touch ext/phar/phar.phar 
make && make install
ln -s /soft/php5.5.38/ /soft/php
cp /soft/src/php-5.5.38/php.ini-production  /soft/php/lib/php.ini
cp /soft/php/etc/php-fpm.conf.default  /soft/php/etc/php-fpm.conf
/soft/php/sbin/php-fpm

//如果需要將php與MySQL獨立出來
--with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql=mysqlnd

PHP5.3編譯安裝

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel -y
yum install freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel -y
yum -y install libmcrypt-devel mhash mcrypt

mkdir -p /soft/package/src
cd /soft/package/src
wget  http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar zxf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv
make
make install
cd ../

cd /soft/package/src
tar xf php-5.3.27.tar.gz
cd php-5.3.27
./configure --prefix=/soft/php5.3.27 \
--with-mysql=/soft/mysql/ --with-iconv-dir=/usr/local/libiconv \
--with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib \
--with-libxml-dir=/usr --enable-xml --disable-rpath --enable-safe-mode \
--enable-bcmath --enable-shmop --enable-sysvsem \
--enable-inline-optimization --with-curl --with-curlwrappers \
--enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt \
--with-gd --enable-gd-native-ttf --with-openssl --with-mhash \
--enable-pcntl --enable-sockets --with-xmlrpc --enable-zip \
--enable-soap --enable-short-tags --enable-zend-multibyte \
--enable-static --with-xsl --with-fpm-user=www --with-fpm-group=www \
--enable-ftp
ln -s /soft/mysql/lib/libmysqlclient.so.18  /usr/lib64/ 
touch ext/phar/phar.phar 
make && make install

ln -s /soft/php5.3.27/ /soft/php
cp /soft/package/src/php-5.3.27/php.ini-production  /soft/php/lib/php.ini
cp /soft/php/etc/php-fpm.conf.default   /soft/php/etc/php-fpm.conf
/soft/php/sbin/php-fpm

//PHP5.3編譯參數詳解

[root@lnmp01 tools]# tar xf php-5.3.27.tar.gz解壓壓縮包
[root@lnmp01 tools]# cd php-5.3.27 進入php安裝目錄
./configure 編譯參數
--prefix=/soft/php5.3.27 指定php的安裝路徑爲/soft/php5.3.27
--with-mysql=/soft/mysql/  需要指定mysql的安裝路徑,安裝PHP需要的MySQL相關內容。
當然需要將MySQL獨立安裝建議使用--with-mysql=mysqlnd替代--with-mysql=/soft/mysql, 將php和mysql拆開. 
--with-iconv-dir=/usr/local/libiconv    libiconv庫,各種字符集間的轉換
--with-freetype-dir 打開對freetype字體庫支持
--with-jpeg-dir 打開對jpeg圖片的支持
--with-png-dir 打開對png圖片的支持
--with-zlib 打開zlib庫的支持,用於http壓縮傳輸
--with-libxml-dir=/usr 打開libxml2庫的支持
--enable-xml    
--disable-rpath 關閉額外的運行庫文件
--enable-safe-mode 打開安全模式
--enable-bcmath 打開圖片大小調整,用zabbix監控時會用到該模塊
--enable-shmop 
--enable-sysvsem 使用sysv信號機制,則打開此選項
--enable-inline-optimization 優化線程
--with-curl 打開curl瀏覽工具的支持
--with-curlwrappers 運維curl工具打開url流
--enable-mbregex    
--enable-mbstring 支持mbstring
--with-mcrypt 編碼函數庫
--with-gd 打開gd庫的支持
--enable-gd-native-ttf 支持TrueType字符串函數庫
--with-openssl openssl的支持,加密傳輸時用到
--with-mhash mhash算法的擴展
--enable-pcntl freeTDS需要用到,可能是鏈接mssql
--enable-sockets 打開sockets支持
--with-xmlrpc 打開xml-rpc的c語言
--enable-zip 打開對zip的支持
--enable-soap soap模塊的擴展
--enable-short-tags 開始和標記函數
--enable-zend-multibyte 支持zend的多字節
--enable-static 生成靜態鏈接庫
--with-xsl 打開XSLT文件支持,擴展libXML2庫,需要libxslt軟件
--enable-ftp    打開ftp的支持
--enable-fpm    表示激活PHP-FPM方式服務,即FactCGI方式運行PHP服務。
--with-fpm-user=www 指定PHP-FPM進程管理的用戶爲www,此處最好和Nginx服務用戶統一。
--with-fpm-group=www    指定PHP-FPM進程管理用戶組爲www,此處最好和Nginx服務用戶組統一。

//軟鏈接
[root@lnmp01 php]# ln -s /application/mysql/lib/libmysqlclient.so.18  /usr/lib64/ 

//創建php安裝需要文件
[root@lnmp01 php]# touch ext/phar/phar.phar

//make生成Makefile 最近進行編譯安裝
[root@lnmp01 php]# make && make install

//軟鏈接去版本(方便升級及後續維護)
[root@lnmp01 php]# ln -s /soft/php5.3.27/ /soft/php

//拷貝php.ini需要配置文件
[root@lnmp01 php]# cp /soft/src/php-5.3.27/php.ini-production  /soft/php/lib/php.ini

//拷貝php-fpm配置文件
[root@lnmp01 php]# cp /soft/php/etc/php-fpm.conf.default  /soft/php/etc/php-fpm.conf 

//啓動php-fpm
[root@lnmp01 php]# /soft/php/sbin/php-fpm 

PHP7編譯參數詳解

    --prefix=/usr/local/php706              //指定php安裝目錄
    --enable-calendar                       //打開日曆擴展功能
    --enable-sysvsem                        //使用sysv信號機制,則打開此選項
    --enable-sysvshm                        //啓用系統V共享內存支持。
    --enable-sysvmsg                        //啓用sysvmsg支持。
    --enable-bcmath                         //打開圖片大小調整,用zabbix監控時會用到該模塊
    --enable-exif                           //圖片的元數據支持
    --enable-ftp                            //打開ftp的支持
    --enable-mbstring                       //支持mbstring
    --enable-shmop                          //啓用shmop支持
    --enable-sockets                        //打開sockets支持
    --enable-dtrace                         //開啓DTrace(動態跟蹤)支持
    --enable-soap                           //soap模塊的擴展
    --enable-zip                            //打開對zip的支持
    --enable-mbregex                        //多字節字符串 函數
    --enable-inline-optimization            /優化線程
    --enable-pcntl                          //freeTDS需要用到,可能是鏈接mssql
    --enable-pdo                            //兼容PHP接口的數據連接拓展。
    --enable-gd-native-ttf                  //支持TrueType字符串函數庫
    --enable-opcache                        //開啓 OPcache高速緩存。
    --enable-xml                            //
    --enable-maintainer-zts                 /啓用線程安全 - 代碼維護者使用
    --enable-fpm                            //表示激活PHP-FPM方式服務,即FactCGI方式運行PHP服務 
    --with-iconv-dir=/usr/local/libiconv    //libiconv庫,各種字符集間的轉換
    --with-gettext                          //打開gnu的gettext 支持,編碼庫用到
    --with-libxml-dir                       //打開libxml2庫的支持
    --with-zlib                             //打開zlib庫的支持,用於http壓縮傳輸
    --with-kerberos=/usr                    //Openssl包含kerberos支持
    --with-openssl                          //openssl的支持,加密傳輸時用到
    --with-mhash                            //mhash算法的擴展
    --with-mysql-sock=mysql_socket          //指定mysql的socket。如果未指定,按默認位置搜索
    --with-mysqli=mysqlnd                   //mysqli擴展
    --with-pdo-mysql=mysqlnd                //PDO:MySQL支持。DIR是MySQL的基本目錄,如果沒有值或mysqlnd作爲DIR傳遞,則將使用MySQL本機驅動程序DIR是MySQL的基本目錄,如果沒有值或mysqlnd作爲DIR傳遞,則將使用MySQL本機驅動程序
    --with-pdo-pgsql=pgsqlnd                //啓用PostgreSQL支持並指定其軟件根目錄或者pg_config的路徑(pgsql需使用)
    --with-curl                             //打開curl瀏覽工具的支持
    --with-gd                               //打開gd庫的支持
    --with-xpm-dir                          //指定gd庫libXpm的安裝目錄
    --with-jpeg-dir                         //打開對jpeg圖片的支持 
    --with-png-dir                          //打開對png圖片的支持 
    --with-freetype-dir                     //打開對freetype字體庫支持 
    --with-xmlrpc                           //打開xml-rpc的c語言
    --with-fpm-user=nobody                  //指定PHP-FPM進程管理的用戶爲www,此處最好和Nginx服務用戶統一。
    --with-fpm-group=nobody                 //指定PHP-FPM進程管理用戶組爲www,最好和Nginx服務用戶組統一。
    --with-fpm-acl                          //使用POSIX 訪問控制列表,5.6.5版本起有效
    --with-mcrypt                           //編碼函數庫
    --with-tsrm-pthreads                    //使用 POSIX 線程(默認)。
    --disable-fileinfo                      //關閉一些運行中的進程如mysqld,httpd等等,以節約內存。
    --disable-rpath                         //關閉額外的運行庫文件

    make ZEND_EXTRA_LIBS='-liconv -L/usr/local/libiconv/lib'    //iconv函數庫能夠完成各種字符集間的轉換,比如:實現utf-8和gb2312編碼的轉換
    make ZEND_EXTRA_LIBS='-liconv'
    make install
    cp php.ini-production /usr/local/php7/etc/php.ini

    configure       它可以自動設定源程序以符合各種不同平臺上Unix系統的特性,並根據系統叄數及環境產生合適的Makefile文件讓源程序可以很方便地在不同的平臺上被編譯
    make            是用來編譯的,它從Makefile中讀取指令,然後編譯。
    make install    將程序安裝至系統中。如果原始碼編譯無誤,且執行結果正確,便可以把程序安裝至系統預設的可執行文件存放路徑。從Makefile中讀取指令,安裝到指定的位置。
    make clean      清除編譯產生的可執行文件及目標文件(object file,*.o)。
    make distclean  除了清除可執行文件和目標文件外,把configure所產生的Makefile也清除掉。

##PHP7可選參數
    --with-xsl=shared,/usr          //打開XSLT 文件支持,擴展了libXML2庫 ,需要libxslt軟件
    --with-zlib-dir=/usr            //定義zlib安裝所在的目錄(壓縮與歸檔)
    --with-snmp=shared,/usr         //包含SNMP支持。(SNMP簡單的服務器監控系統)
    --with-tidy=shared,/usr         //包含tidy支持。(網頁代碼分析和糾錯的工具,能夠支持多種頁面編碼,並且支持xhtml輸出)
    --with-recode=shared,/usr       //包含recode支持(Recode庫可以在各種編碼字符集和表面編碼之間轉換文件)
    --with-pspell=shared,/usr       //包含PSPELL支持GNU (實現拼寫檢查)
    --with-gmp=shared,/usr          //啓用GNU MP支持
    --with-enchant=shared,/usr      //啓用 enchant 支持.(各種拼寫庫的抽象層)
    --with-vpx-dir=shared,/usr      //GD: 指定libvpx的安裝目錄(VP8編碼×××)
    --with-system-tzdata            //程序執行函數
    --enable-intl                   //開啓國際化支持(國際化與字符編碼支持)
     --with-mssql=shared,/usr       //包含MSSQL-DB支持,並指定FreeTDS軟件目錄(php7已移除)
     --with-ldap=shared,/usr        //ldap擴展模塊
    --with-ldap-sasl=/usr           //ldap擴展模塊
    --with-unixODBC=shared,/usr     //包含unixODBC支持(通過ODBC鏈接 本地mysql)
   --disable-static                 //禁用靜態庫

##php7默認,可不增選項
    --disable-debug             /關閉詳細的請求信息(默認爲關閉)
    --build=x86_64-linux-gnu        //指定編譯工具所在系統的系統類型BUILD
    --host=x86_64-linux-gnu         //指定Apache HTTP服務器將要進行交叉編譯時運行的目標系統類型HOST
    --localstatedir=/var            //機器數據目錄DIR (默認安裝路徑下的var)
    --mandir=/usr/share/man         //手冊文檔目錄DIR (默認安裝路徑下的datarootdir下man目錄)
    --disable-short-tags            默認禁用短形式的開始標籤 <? 。
    --disable-libtool-lock          避免鎖定(可能會破壞並行構建)
    --disable-all                   禁用默認情況下啓用的所有擴展程序
    --enable-shared=PKGS            //默認啓用構建共享庫
    --enable-static=PKGS            //默認啓用構建靜態庫
    --enable-fast-install = PKGS    //默認啓用優化後快速安裝
    --enable-ctype                  //ctype 擴展,從PHP4.2.0默認啓用。通過--disable-ctype禁用
    --with-pear=/usr/share/php      //PEAR(實現了諸如析構函數,錯誤捕獲功能)默認爲 PREFIX/lib/php
    --with-apxs2=/usr/bin/apxs2     //apxs是以php module的模式加載PHP的。
    --with-pcre-regex=/usr          //PHP 4.2.0 開始這些函數是默認啓用的。可以通過--without-pcre-regex //禁用 pcre 函數
    --with-layout=GNU               //顯示安裝文件的佈局PHP或GNU(默認PHP)
    --with-regex=php                //正則表達式庫類型(默認TYPE=PHP)
    --with-sqlite3=shared,/usr      //5.3 默認啓動SQLite3 擴展。
    --with-mysql-sock=SOCKPATH      //mysql unix套接字指針位置。如果未指定,將搜索默認位置
    --with-odbcver=HEX              //強制支持通過的ODBC版本。 預期的十六進制數,默認爲0x0300。
    --with-gnu-ld                   //假設C編譯器使用GNU ld default = no
    --with-config-file-path=PATH    //設置 php.ini 的搜索路徑。默認爲 PREFIX/lib。  
    --with-fpm-user=                //默認nobody用戶
    --with-fpm-group=               //默認nobody用戶組
    --with-tsrm-pthreads            //默認使用 POSIX 線程。
    --with-pic                      //嘗試只使用PIC /非PIC對象,默認同時使用
    --with-apxs[=FILE]              //編譯共享的 Apache 模塊。FILE 是可選的 Apache apxs 工具的路徑,默認指向 apxs。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章