搜尋
首頁後端開發php教程PHP編譯安裝 PHP各編譯參數配置詳解

PHP編譯安裝 PHP各編譯參數配置詳解

Apr 03, 2018 am 11:19 AM
php參數配置

這篇文章給介紹的內容是PHP編譯安裝 PHP各編譯參數配置詳解,現在分享給大家,也可以有需要幫助的朋友一個參考。

  • php編譯安裝的基本步驟

//首先要下载一个php的安装包,例如:php-5.6.25.tar.gz,tar zxvf php-5.6.25.tar.gz   // 解压php安装包,得到一个php-5.6.25的文件夹cd php-5.6.25  ./configure           //对php的安装进行配置,后面要加配置选项# make && make install //编译安装完成之后,需要从解压后的文件夹中把php.ini-development //或是 php.ini-production 重命名成php.ini 复制到php安装文件中的相应位置,//可在phpinfo中查看 相应位置.//  把/usr/local/php/etc/php-fpm.conf.default  复制到当前文件夹下,保存未php-fpm.conf

上面是php編譯安裝的基本流程,下面詳細介紹php的設定參數.


  • php各參數配置詳解

--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 才用到--with-mcrypt          //mcrypt算法的扩展--with-mhash           //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集合各種擴展,適應各種環境,這會讓把你自己逼進窘境的。


  • 需要單獨安裝的擴充功能

  • gd函式庫。

  • ming的擴充。

  • mhash和mcrypt的擴充。

詳細選項上,除了上述的安裝簡介外,也可以在編譯時加入其它的選項。
apache 模組
語法: --with-apache=DIR
說明: 用本選項可以讓**PHP
** 以apache的模組方式使用,DIR 的字串可以是/usr/local/apache 或其它安裝apache的目錄
範例: --with-apache=/var/lib/apache
fhttpd 伺服器模組
#語法: --with-fhttpd=DIR
說明: 若使用fttpd 伺服器,可以使用本指令編譯PHP。用模組的方式配合 fttpd 伺服器,可以有較好的效率。
Adabas D 資料庫
語法: --with-adabas=DIR
#說明: 資料庫系統為 Adabas D 資料庫時需要加本選項。關於 Adabas D 資料庫的細節,可以參考 http://www.adabas.com。
範例: --with-adabas=/usr/local/adabasd
dBase 資料表
語法: --with-dbase
說明: 只要加本選項,不用其它的參數或函數庫,PHP 就會讓系統有存取dBase 資料表的功能。
filePro 資料庫
語法: --with-filepro
說明: 不用指定資料庫路徑及其它函數庫等,可以讀取 filePro 資料庫 (唯讀)。
mSQL 資料庫
語法: --with-msql=DIR
說明: 提供存取 mSQL 資料庫。更多的細節請參考 mSQL 的網站 http://www.hughes.com.au。
範例: --with-msql=/usr/local/Hughes
MySQL 資料庫
語法: --with-mysql=DIR
說明: 提供存取MySQL 資料庫。更多的細節請參考 MySQL 的網站 http://www.tcx.se。
範例: --with-mysql=/usr/local/mysql
iODBC 資料庫裝置
語法: --with-iodbc=DIR
說明: 提供ODBC 資料庫裝置,用來存取後端資料庫。更多的細節請參考 iODBC 的網站 http://www.iodbc.org。
範例: --with-iodbc=/usr/local/iodbc
OpenLink ODBC 資料庫裝置
語法: --with-openlink=DIR
#說明: 使用OpenLink ODBC資料庫裝置,用來存取後端資料庫。更多的細節請參考 OpenLink ODBC 的網站 http://www.openlinksw.com。
範例: --with-openlink=/usr/local/openlink
Oracle 資料庫
語法: --with-oracle=DIR
說 明: 使用 Oracle 資料庫。 Oracle 的版本要超過 7.3 版。您也可以在 PHP 程式中使用環境變數 ORACLE_HOME 來指定 Oracle 的路徑。更多有關 Oracle 的資訊請參考 Oracle 的網站 http://www.oracle.com。
範例: --with-oracle=/export/app/oracle/product/7.3.2
PostgreSQL 資料庫
語法: --with-pgsql=DIR
說明: 使用PostgreSQL 資料庫。更多有關 PostgreSQL 的資訊請參考 PostgreSQL 的網站 http://www.postgreSQL.org 或台灣的 Mirror 站 http://postgresql.ccit.edu.tw。
範例: --with-pgsql=/usr/local/pgsql
Solid 資料庫
語法: --with-solid=DIR
說明: 使用 Solid 資料庫。更多有關 Solid 的資訊請參考 Solid 的網站 http://www.solidtech.com。
範例: --with-solid=/usr/local/solid
Sybase 資料庫
語法: --with-sybase=DIR
說明: 使用 Sybase 資料庫。更多有關 Sybase 的資訊請參考 Sybase 的網站 http://www.sybase.com。
範例: --with-sybase=/home/sybase
Sybase-CT 資料庫
語法: --with-sybase-ct=DIR
說明: 使用Sybase- CT 資料庫。
範例: --with-sybase-ct=/home/sybase
Velocis 資料庫
語法: --with-velocis=DIR
說明: 使用 Velocis 資料庫。有關 Velocis 資料庫的進一步資料請參考 Raima 公司的網站 http://www.raima.com。
範例: --with-velocis=/usr/local/velocis
自訂ODBC 資料庫驅動程式
語法: --with-custom-odbc=DIR
說明: 使用自訂的ODBC 函數庫。當然,使用本方式時要指定 CUSTOM_ODBC_LIBS 及 CFLAGS 變數。例如QNX 機器上使用Sybase **SQL
** Anywhere 時可能要設定係統環境變數CFLAGS=-DODBC_QNX、LDFLAGS=-lunix 及CUSTOM_ODBC_LIBS="-ldblib -lodbc",並且要在PHP 配置中加入-- with-custom-odbc=/usr/lib/sqlany50
範例: --with-custom-odbc=/usr/local/odbc
不使用ODBC 資料庫驅動程式
語法: --disable-unified-odbc
說明: 使用本選項將使所有的ODBC 資料庫驅動程式無法運作。本選項不需指定路徑,而受本選項影響的選項有 --with-iodbc、--with-solid、--with-adabas、--with-velocis 及 --with-custom-odbc。
LDAP 目錄協定
語法: --with-ldap=DIR
說明: 若要使用目錄協定 (Lightweight Directory Access Protocol, LDAP) 則必須開啟本選項。有關 LDAP 的細節,可以參考 RFC 檔案的 RFC1777 及 RFC1778。
範例: --with-ldap=/usr/local/ldap.
mcrypt 編碼函數庫
#語法: --with-mcrypt=DIR
说明: 当安装了 mcrypt 函数库后,可在编译 PHP 时加入本选项,让程序可以使用编解码功能。
范例: --with-mcrypt=/usr/local/include
Sys V 信号
语法: --enable-sysvsem
说明: 要使用 SysV 的信号 (semaphores) 机制,则要打开本选项。
XML 支持
语法: --with-xml
说明: 打开本选项可以支持 James Clark's 写的 XML 解析程序库。
维护模式
语法: --enable-maintainer-mode
说明: 本选项一般不会打开,除非是 PHP 开发人员比较有用。
正则表达式程序库
语法: --with-system-regex
说明: 若您需要额外的正则表达式功能,可以加入本选项。
PHP 配置文件
语法: --with-config-file-path=DIR
说明: 用来指定 php3.ini 或 php4.ini 的路径,供 PHP 初始化时使用。
范例: --with-config-file-path=/usr/local/lib
PHP 执行路径
语法: --with-exec-dir=DIR
说明: 有时为了系统的安全性考虑,会指定 PHP 程序一定要在哪个目录执行。
范例: --with-exec-dir=/usr/local/bin
调试模式
语法: --enable-debug
说明: 本选项一般不会使用,除非在开发 PHP 程序时比较有用。它可以显示额外的错误信息。
安全模式
语法: --enable-safe-mode
说明: 默认值是打开的,可以对系统安全提供比较多的保护。
变量追踪
语法: --enable-track-vars
说明: 让 PHP 能 追踪 HTTP_GET_VARS、HTTP_POST_VARS 及 HTTP_COOKIE_VARS 三个变量,一般是打开的。
自动加引入字符
语法: --enable-magic-quotes
说明: 可让程序在执行时自动加入反斜线的引入字符。
打开调试器
语法: --enable-debugger
说明: 打开内建的 PHP 调试器。目前本功能还在实验阶段,尚未成熟。
取消路径 (discard path)
语法: --enable-discard-path
说明: 打开这个选项,**用户
**就不能透过浏览器读取 .htaccess 等和系统安全相关的文件。
高精确度数学函数
语法: --enable-bcmath
说明: 打开高精确度函数。必须要先安装本函数库,本选项方有效。
强制 CGI 重定向
语法: --enable-force-cgi-redirect
范 例: 若使用 CGI VERSION 模式来执行 PHP 的设,打开本选项会增加安全性。例如用户读 http://my.host/cgi-bin/php/secret/doc.html 遇到比较了解 PHP 系统的黑客级用户可能会自已输入以下网址 http://my.host/secret/doc.html 来读取相关信息。若 PHP 和 Apache 编译在一起,让 PHP 变成 Apache 的一部份,则不需要加入本选项。
不使用短的标记
语法: --disable-short-tags
说明: 配置本选项后,PHP 的程序就不能使用短的标记,一定要用的长标记。
引入远端档宁
语法: --enable-url-includes
说明: 配置本选项可让 PHP 程序可以引入 (include) 远端的 HTTP 或 FTP 服务器中的文件。
关闭语法效果
语法: --disable-syntax-hl
说明: 使用本选项会关闭 PHP 语法的彩色效果。
函数库路径
语法: CPPFLAGS=-IDIR 及 LDFLAGS=-LDIR
说明: 若 PHP 在安全或编译所需的函数库在值得的路径,需要加入本选项,LDFLAGS 表示函数库的路径,CPPFLAGS 表示标头文件的路径。
范例: LDFLAGS=-L/my/lib/dir CPPFLAGS=-I/my/include/dir ./configure


  • 配置项代码

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php  
--enable-mysqlnd --enable-opcache --enable-sockets --enable-sysvmsg 
--enable-sysvsem  --enable-sysvshm --enable-shmop --enable-zip 
--enable-ftp --enable-soap --enable-xml --enable-mbstring --disable-rpath 
--disable-debug --disable-fileinfo --with-mysql=mysqlnd 
--with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pcre-regex 
--with-iconv --with-zlib --with-gd --with-openssl --with-xmlrpc 
--with-curl --with-imap-ssl --with-freetype-dir --enable-fpm 
--enable-pcntl --with-mcrypt --with-mhash

转自:https://www.jianshu.com/p/0a79847c8151

相关推荐:

Centos 下PHP编译安装fileinfo扩展

PHP编译安装时常见错误解决办法_PHP教程


以上是PHP編譯安裝 PHP各編譯參數配置詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
使用數據庫存儲會話的優點是什麼?使用數據庫存儲會話的優點是什麼?Apr 24, 2025 am 12:16 AM

使用數據庫存儲會話的主要優勢包括持久性、可擴展性和安全性。 1.持久性:即使服務器重啟,會話數據也能保持不變。 2.可擴展性:適用於分佈式系統,確保會話數據在多服務器間同步。 3.安全性:數據庫提供加密存儲,保護敏感信息。

您如何在PHP中實現自定義會話處理?您如何在PHP中實現自定義會話處理?Apr 24, 2025 am 12:16 AM

在PHP中實現自定義會話處理可以通過實現SessionHandlerInterface接口來完成。具體步驟包括:1)創建實現SessionHandlerInterface的類,如CustomSessionHandler;2)重寫接口中的方法(如open,close,read,write,destroy,gc)來定義會話數據的生命週期和存儲方式;3)在PHP腳本中註冊自定義會話處理器並啟動會話。這樣可以將數據存儲在MySQL、Redis等介質中,提升性能、安全性和可擴展性。

什麼是會話ID?什麼是會話ID?Apr 24, 2025 am 12:13 AM

SessionID是網絡應用程序中用來跟踪用戶會話狀態的機制。 1.它是一個隨機生成的字符串,用於在用戶與服務器之間的多次交互中保持用戶的身份信息。 2.服務器生成並通過cookie或URL參數發送給客戶端,幫助在用戶的多次請求中識別和關聯這些請求。 3.生成通常使用隨機算法保證唯一性和不可預測性。 4.在實際開發中,可以使用內存數據庫如Redis來存儲session數據,提升性能和安全性。

您如何在無狀態環境(例如API)中處理會議?您如何在無狀態環境(例如API)中處理會議?Apr 24, 2025 am 12:12 AM

在無狀態環境如API中管理會話可以通過使用JWT或cookies來實現。 1.JWT適合無狀態和可擴展性,但大數據時體積大。 2.Cookies更傳統且易實現,但需謹慎配置以確保安全性。

您如何防止與會議有關的跨站點腳本(XSS)攻擊?您如何防止與會議有關的跨站點腳本(XSS)攻擊?Apr 23, 2025 am 12:16 AM

要保護應用免受與會話相關的XSS攻擊,需採取以下措施:1.設置HttpOnly和Secure標誌保護會話cookie。 2.對所有用戶輸入進行輸出編碼。 3.實施內容安全策略(CSP)限制腳本來源。通過這些策略,可以有效防護會話相關的XSS攻擊,確保用戶數據安全。

您如何優化PHP會話性能?您如何優化PHP會話性能?Apr 23, 2025 am 12:13 AM

优化PHP会话性能的方法包括:1.延迟会话启动,2.使用数据库存储会话,3.压缩会话数据,4.管理会话生命周期,5.实现会话共享。这些策略能显著提升应用在高并发环境下的效率。

什麼是session.gc_maxlifetime配置設置?什麼是session.gc_maxlifetime配置設置?Apr 23, 2025 am 12:10 AM

theSession.gc_maxlifetimesettinginphpdeterminesthelifespanofsessiondata,setInSeconds.1)它'sconfiguredinphp.iniorviaini_set().2)abalanceisesneededeededeedeedeededto toavoidperformance andunununununexpectedLogOgouts.3)

您如何在PHP中配置會話名?您如何在PHP中配置會話名?Apr 23, 2025 am 12:08 AM

在PHP中,可以使用session_name()函數配置會話名稱。具體步驟如下:1.使用session_name()函數設置會話名稱,例如session_name("my_session")。 2.在設置會話名稱後,調用session_start()啟動會話。配置會話名稱可以避免多應用間的會話數據衝突,並增強安全性,但需注意會話名稱的唯一性、安全性、長度和設置時機。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。