安裝步驟如下
安裝必要的軟件
yum install -y autoconf automake libtool re2c libxml* openssl* BZip2* libcurl* libjpeg* libpng* libXpm* libzip* zlib* freetype* pcre* flex bison tar get
獲取源碼
wget -O /data1/source/php-7.3.1.tar.gz http://cn2.php.net/get/php-7.3.1.tar.gz/from/this/mirror
cd /data1/source/
tar zxf php-7.3.1.tar.gz
cd php-7.3.1
編譯安裝
// php根目錄設置為/data1/install/php
// php的配置文件目錄為/data/config/php
// php-fpm的配置文件目錄為/data/install/php/etc
// php-fpm的可運行文件在源碼目錄的sapi/fpm下
// php的可執行文件目錄為/usr/local/bin
./configure --prefix=/data1/install/php --with-config-file-path=/data1/config/php/ --bindir=/usr/local/bin --sbindir=/user/local/sbin --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-libxml-dir --enable-debug --with-zlib --disable-rpath --enable-sysvsem --with-curl --enable-mbregex --enable-mbstring --enable-zip --enable-soap --with-pear --disable-phar --disable-tokenizer --enable-ftp --with-mysqli --with-pdo-mysql --with-openssl --with-bz2 --with-jpeg-dir --with-webp-dir --with-png-dir --with-xpm-dir --with-freetype-dir --with-mhash --with-iconv-dir --enable-gd-jis-conv --with-gd --enable-sockets --with-pcre-dir --enable-bcmath --enable-pdo
make
make install
安裝過程可能遇到的一些問題
如果提示libzip版本需要升級,則安裝新版的,
以下是安裝1.2.0版本libzip的步驟
yum remove libzip
cd ~
wget https://nih.at/libzip/libzip-1.2.0.tar.gz
tar -zxvf libzip-1.2.0.tar.gz
cd libzip-1.2.0
./configure && make && make install
如果出現"off_t undefined; check your library configuration"這個錯誤
在運行一下命令
echo '/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64'>>/etc/ld.so.conf&&ldconfig -v
編譯參數詳解
[]內的路徑表示默認路徑
安裝目錄:
--prefix=PREFIX 指定 php 安裝目錄 [/usr/local]
--exec-prefix=EPREFIX 指定 php 用戶可執行文件安裝目錄 [PREFIX]
--bindir=DIR 用戶可執行文件 [EPREFIX/bin]
--sbindir=DIR 系統管理員可執行文件 [EPREFIX/sbin]
--libexecdir=DIR 程序可執行文件 [EPREFIX/libexec]
--sysconfdir=DIR 只讀的單一機器數據目錄DIR ,用於存放php.ini之類的服務器配置文件 [PREFIX/etc]
--sharedstatedir=DIR 可改寫的體系無關數據目錄DIR [PREFIX/com]
--localstatedir=DIR 可改寫的單一機器數據目錄DIR [PREFIX/var]
--runstatedir=DIR 可改寫的每個進程數據目錄DIR [LOCALSTATEDIR/run]
--libdir=DIR 對象代碼庫目錄DIR [EPREFIX/lib]
--includedir=DIR PHP的C頭文件目錄DIR [PREFIX/include]
--oldincludedir=DIR 非gcc的C頭文件目錄DIR [/usr/include]
--datarootdir=DIR PHP服務器只讀的體系無關數據根目錄DIR [PREFIX/share]
--datadir=DIR PHP服務器只讀的體系無關數據目錄DIR [DATAROOTDIR]
--infodir=DIR 信息文檔目錄DIR [DATAROOTDIR/info]
--localedir=DIR 地區相關數據DIR [DATAROOTDIR/locale]
--mandir=DIR 手冊文檔目錄DIR [DATAROOTDIR/man]
--docdir=DIR 文檔根目錄 [DATAROOTDIR/doc/PACKAGE]
--htmldir=DIR html文檔目錄DIR [DOCDIR]
--dvidir=DIR dvi文檔目錄DIR [DOCDIR]
--pdfdir=DIR pdf文檔目錄DIR [DOCDIR]
--psdir=DIR ps文檔目錄DIR [DOCDIR]
交叉編譯選項:
--build=BUILD 指定編譯工具所在系統的系統類型BUILD [guessed]
--host=HOST 指定HTTP服務器將要進行交叉編譯時運行的目標系統類型HOST [BUILD]
--target=TARGET 指定交叉編譯所產生的目標代碼類型 [HOST]
可選功能和包:
--disable-option-checking 忽略無法識別的--enable/--with選項
--disable-FEATURE 關閉特征選項
--enable-FEATURE[=ARG] 啟用特征選項
--with-PACKAGE[=ARG] 使用封裝
--without-PACKAGE 禁用封裝
--with-libdir=NAME 庫文件查找路徑設置…/XXX/lib/
--disable-rpath 禁用傳遞其他運行庫搜索路徑
--enable-re2c-cgoto 啟用-g標志到re2c以使用計算的goto-gcc擴展
--disable-gcc-global-regs 是否啟用GCC全局寄存器變量
SAPI模塊:
--with-apxs2=FILE 編譯共享的apache2.0處理程序的模塊。參數是apache apxs工具的路徑文件
--disable-cli 編譯禁用CLI的PHP版本。這個參數需要–without-pear (this forces –without-pear)
--enable-embed=TYPE 實驗性:建立內嵌的SAPI庫。參數為shared、static。
--enable-fpm 啟用執行FPM的SAPI可執行文件
--with-fpm-user=USER 設置php-fpm運行用戶,此處最好和Nginx服務用戶統一 [nobody]
--with-fpm-group=GRP 設置php-fpm運行用戶組,對於系統用戶,此通常應設置為與fpm用戶名匹配,此處最好和Nginx服務用戶統一 [nobody]
--with-fpm-systemd 激活SystemD集成
--with-fpm-acl 使用POSIX訪問控制列表
--with-litespeed 將PHP構建為LiteSpeed模塊
--enable-phpdbg 構建PHPDBG
--enable-phpdbg-webhelper 構建phpdbg web sapi支持
--enable-phpdbg-debug 在調試模式下生成phpdbg
--disable-cgi 禁用生成PHP的CGI版本
--with-valgrind=DIR 啟用Valgrind支持
普通參數設置:
--enable-gcov 請用GCOV代碼覆蓋率(僅用於開發人員使用)
--enable-debug 帶調試符號的編譯
--with-layout=TYPE 顯示安裝文件的布局。參數為PHP或GNU [PHP]
--with-config-file-path=PATH php.ini文件位置 [PREFIX/lib]
--with-config-file-scan-dir=PATH 掃描配置文件的路徑
--enable-sigchild 使用PHP自帶的SIGCHLD處理器
--enable-libgcc 啟用libgcc的精確鏈接
--disable-short-tags 默認禁用短形式的<?作為php代碼的開始標記
--enable-dmalloc 啟用dmalloc(dmalloc是Linux C編程偵測記憶體溢出工具)
--disable-ipv6 禁用IPv6支持
--enable-dtrace 啟用dtrace支持
--enable-fd-setsize 設置描述符集的大小
擴展參數:
語法: --with-EXTENSION=[shared[,PATH]] (注:並非所有模塊都可編譯成共享方式)
下面的例子顯示了把foobar編譯成共享方式,並指定安裝路徑為/usr/local/foobar/
例如: –with-foobar=shared,/usr/local/foobar/
--disable-all 關閉默認為啟用的所有擴展功能
--disable-libxml 禁用LIBXML支持
--with-libxml-dir=DIR LIBXML安裝目錄
--enable-ftp 啟用ftp支持
--with-openssl=DIR 啟用openssl支持
--with-openssl-dir=DIR 指定openssl的安裝目錄
--with-kerberos=DIR OpenSSL的支持:包括Kerberos
--with-system-ciphers openssl:使用系統默認密碼列表而不是硬編碼值
--with-pcre-regex=DIR 啟用pcre(perl兼容正則表達式)支持
--with-pcre-jit 啟用PCRE JIT功能(僅捆綁)
--with-pcre-valgrind=DIR 啟用PCRE Valgrind支持。僅限開發人員!
--without-sqlite3=DIR 不包括sqlite3支持。dir是sqlite3安裝目錄的前綴。
--with-zlib=DIR 啟用zlib支持
--with-zlib-dir=<DIR> 定義zlib安裝所在的目錄
--enable-bcmath 啟用bcmatch
--with-bz2=DIR 包含BZip2支持
--enable-calendar 啟用日歷轉換支持
--disable-ctype 禁用ctype功能
--with-curl=DIR 啟用cURL支持
--enable-dba 構架捆綁模塊的DBA。要建立擴展的共享模塊使用–enable-dba=shared參數。
--with-qdbm=DIR 啟用QDBM支持
--with-gdbm=DIR 啟用GDBM支持
--with-ndbm=DIR 啟用NDBM支持
--with-db4=DIR 啟用Berkeley DB4支持
--with-db3=DIR 啟用Berkeley DB3支持
--with-db2=DIR 啟用Berkeley DB2支持
--with-db1=DIR 啟用Berkeley DB1支持
--with-dbm=DIR 啟用DBM支持
--with-tcadb=DIR 啟用TCADB支持
--with-lmdb=DIR 啟用LMDB支持
--without-cdb=DIR 啟用CDB支持(捆綁方式)
--disable-inifile 啟用INI支持(捆綁方式)
--disable-flatfile 啟用QDBM支持(捆綁方式)
--disable-dom 禁用DOM支持
--with-libxml-dir=DIR 啟用libxml2並指定其安裝目錄
--with-enchant=DIR 包括Enchant支持.gnu Aspell 1.1.3版或更高版本。
--enable-exif 啟用exif(來自圖像的元數據)支持
--disable-fileinfo 禁用文件信息支持
--disable-filter 禁用輸入過濾支持
--with-pcre-dir 支持及其安裝目錄
--with-gd=DIR 啟用GD支持並指定GD庫的安裝目錄
--with-webp-dir=DIR 指定libwebp的安裝目錄
--with-jpeg-dir=DIR 指定libjpeg的安裝目錄
--with-png-dir=DIR 指定libpng的安裝目錄
--with-zlib-dir=DIR 指定libz的安裝目錄
--with-xpm-dir=DIR 指定libXpm的安裝目錄
--with-freetype-dir=DIR 指定FreeType2的安裝目錄
--enable-gd-jis-conv 啟用JIS-mapped日語字體支持
--with-gettext=DIR 包含GNU gettext支持
--with-gmp=DIR 啟用GNU MP支持
--with-mhash=DIR 啟用mhash支持
--disable-hash 禁用hash支持
--without-iconv=DIR 禁用iconv支持
--with-imap=DIR 包含IMAP支持。指定c-client安裝目錄
--with-kerberos=DIR 啟用kerberos支持並指定其目錄
--with-imap-ssl=DIR 啟用ssl支持並指定openssl目錄
--with-interbase=DIR 啟用interbase支持並指定其目錄
--enable-intl 支持國際化
--with-icu-dir=DIR 指定可以在哪里找到ICU庫和頭文件
--disable-json 禁用JavaScript對象順序話支持
--with-ldap=DIR 包含LDAP支持
--with-ldap-sasl=DIR 包含Cyrus SASL支持
--enable-mbstring 啟用多字節字符串的支持
--with-onig=DIR mbstring:使用外部Oniguruma。dir是oniguruma安裝前綴。如果未設置dir,將使用捆綁的oniguruma
--disable-mbregex 禁用多字節正則表達式的支持
--disable-mbregex-backtrack 禁用多字節正則表達式回溯檢查
--with-mysqli=FILE 包含MySQLi支持。參數為mysql_config的位置。如果沒有值或mysqlnd作為文件傳遞,則將使用mysql本機驅動程序
--enable-embedded-mysqli 啟用embedded支持。注意:不適用於MySQL本機驅動程序!
--with-mysql-sock=SOCKPATH 定位mysql的unix 套接字指針。如果未指定,則按默認位置搜索。
--with-oci8=DIR 包含Oracle支持。如果使用Oracle客戶端安裝則使用–with-oci8=instantclient,/path/to/oic /lib
--with-odbcver=HEX 強制支持傳遞的ODBC版本。應為十六進制數,默認值為0x0350。使用特殊值0可防止定義顯式ODBCver。
--with-adabas=DIR 包含Adabas D支持 [/usr/local]
--with-sapdb=DIR 包含SAP DB支持 [/usr/local]
--with-solid=DIR 包含Solid支持 [/usr/local/solid]
--with-ibm-db2=DIR 包含IBM DB2支持 [/home/db2inst1/sqllib]
--with-empress=DIR 包含empress支持
--with-empress-bcs=DIR 包含Empress本地訪問支持。
--with-custom-odbc=DIR 包括用戶自定義的ODBC的支持。目錄是ODBC安裝的主目錄。確定定義了CUSTOM_ODBC_LIBS並且在include目錄下有 odbc.h的頭文件你要在QNX上為Sybase SQL Anywhere定義如下:運行此之前,配置腳本CPPFLAGS="-DODBC_QNX -DSQLANY_BUG" LDFLAGS=-lunix CUSTOM_ODBC_LIBS="-ldblib -lodbc"
--with-iodbc=DIR 包含iODBC支持 [/usr/local]
--with-esoob=DIR 包含Easysoft OOB支持 [/usr/local/easysoft/oob/client]
--with-unixODBC=DIR 包含unixODBC支持 [/usr/local]
--with-dbmaker=DIR 包含DBMaker支持
--disable-opcache 禁用Zend Opcache支持
--disable-opcache-file 禁用基於文件的緩存
--disable-huge-code-pages 禁止將PHP代碼頁復制到大頁中
--enable-pcntl 啟用pcntl支持(僅用於CLI和CGI)
--disable-pdo 禁用PHP數據對象支持
--with-pdo-dblib=DIR 啟用DBLIB-DB支持,目錄為FreeTDS主目錄。
--with-pdo-firebird=DIR 啟用Firebird支持 [/opt/firebird]
--with-pdo-mysql=DIR 啟用PDO:mysql支持
--with-zlib-dir=DIR 設置PDO:MySQL的zlib安裝目錄
--with-pdo-oci=DIR 設置PDO:Oracle OCI支持。為Oracle安裝客戶端SDK使用–with-pdo-oci=instantclient,prefix,version參數
--with-pdo-odbc=flavour,dir 啟用“flavour”ODBC支持。在dir目錄的include和lib目錄下查找。“flavour”參數值可以是ibm-db2, unixODBC, generic。如果dir省略,則使用默認值。如果你試圖通過generic使用一個如若不支持的驅動程序。為generic ODBC提供的語法格式如下:–with-pdo-odbc=generic,dir,libname,ldflags,cflags。作為共享的編譯 后的擴展文件的名一般為pdo_odbc.so
--with-pdo-pgsql=DIR 啟用PDO:PostgreSQL支持
--without-pdo-sqlite=DIR 啟用SQLite 3支持
--with-pgsql=DIR 啟用PostgreSQL支持並指定其軟件根目錄或者pg_config的路徑
--disable-phar 禁用phar支持
--disable-posix 禁用posix-like功能
--with-pspell=DIR 包含PSPELL支持GNU
--with-libedit=DIR 包含libedit readline更換(僅用於CLI和CGI)
--with-readline=DIR (CLI/CGI only)包含readline支持(僅用於CLI和CGI)
--with-recode=DIR 包含recode支持
--disable-session 禁用session支持
--with-mm=DIR 為session存儲啟用mm支持。
--enable-shmop 啟用shmop支持
--disable-simplexml 禁用simpleXML支持
--with-libxml-dir=DIR 啟用simpleXML:libXML2支持。
--with-snmp=DIR 包含SNMP支持。
--with-openssl-dir=DIR 包含SNMP:openssl支持
--enable-soap 啟用SOAP支持
--with-libxml-dir=DIR 啟用SOAP:LIBXML2支持
--enable-sockets 啟用sockets支持
--with-sodium=DIR 包含sodium支持
--with-password-argon2=DIR 在密碼中包含argon2支持。dir是argon2共享庫路徑
--enable-sysvmsg 啟用sysvmsg支持
--enable-sysvsem 啟用系統V信號支持
--enable-sysvshm 啟用系統V共享內存支持
--with-tidy=DIR 包含tidy支持
--disable-tokenizer 禁用tokenizer支持
--enable-wddx 啟用WDDX支持
--with-libxml-dir=DIR 包含WDDX:libxml2支持
--with-libexpat-dir=DIR 為XMLRPC-EPI啟用libexpat(不推薦)
--disable-xml 禁用XML支持
--with-libxml-dir=DIR 啟用libxml2支持
--with-libexpat-dir=DIR 啟用libexpat支持(不推薦)
--disable-xmlreader 禁用XMLreader支持
--with-libxml-dir=DIR 啟用XMLreader的libxml2支持
--with-xmlrpc=DIR 包含XMLRPC-EPI支持
--with-libxml-dir=DIR 啟用XMLRPC-EPI:libxml2支持
--with-libexpat-dir=DIR 啟用XMLRPC-EPI:libexpat支持(不推薦)
--with-iconv-dir=DIR 啟用XMLRPC-EPI:iconv支持
--disable-xmlwriter 禁用XMLWriter支持
--with-libxml-dir=DIR 啟用XMLReader:libxml2支持
--with-xsl=DIR 啟用XSL支持
--enable-zend-test 啟動zend-test擴展
--enable-zip 包含zip讀寫支持
--with-zlib-dir=DIR 啟用zip:zlib支持
--with-pcre-dir ZIP: pcre安裝目錄
--with-libzip=DIR ZIP: 使用libzip
--enable-mysqlnd 顯式啟用mysqlnd,將在其他擴展需要時隱式完成
--disable-mysqlnd-compression-support 禁用對mysqlnd中mysql壓縮協議的支持
--with-zlib-dir=DIR mysqlnd:設置libz安裝前綴的路徑
PEAR相關選項:
--with-pear=DIR 安裝PEAR目錄 [PREFIX/lib/php]
--without-pear 不安裝PEAR
ZEND相關選項:
--enable-maintainer-zts 啟用線程安全-僅限代碼維護者!!
--disable-inline-optimization 如果構建zend_execute.lo失敗,請嘗試此開關
--disable-zend-signals 是否啟用Zend信號處理
Thread Safe Resource Manager線程安全資源管理器相關配置:
--with-tsrm-pth=pth-config 使用GNU PTH
--with-tsrm-st 使用SGI的狀態線程
--with-tsrm-pthreads 使用POSIX線程(默認)
Libtool相關配置:
--enable-shared=PKGS 編譯共享模塊
--enable-static=PKGS 編譯靜態模塊
--enable-fast-install=PKGS 啟用快速安裝優化方式
--with-gnu-ld 假設C編譯器使用GNU ld
--disable-libtool-lock 避免鎖死(可能破壞並聯的編譯)
--with-pic 嘗試僅使用PIC或non-PIC對象
--with-tags=TAGS 包括額外的配置
一些有影響的環境變量:
CC C編譯器命令
CFLAGS C編譯器標志
LDFLAGS 鏈接器標志
LIBS 要傳遞給鏈接器的庫
CPPFLAGS C/C++預處理器標志
CPP C預處理器
YACC 另一個編譯的編譯為使用
YFLAGS 默認情況下將傳遞給$yacc的參數列表。此腳本將默認yFlags為空字符串,以避免一些make應用程序給出的默認值為“-d”。
CXX C++編譯器命令
CXXFLAGS C++編譯器標志
CXXCPP C++預處理器