從源碼編譯安裝 PHP 運(yùn)行環(huán)境

一、前言


在搭建 Linux + Nginx + MySQL + PHP 的 Web 服務(wù)器運(yùn)行環(huán)境的過程中届宠,需要涉及到安裝 PHP烁落。通常情況下乘粒,可以使用 Linux 各發(fā)行版系統(tǒng)自帶的包管理器便捷快速地安裝,例如:Ubuntu 的 apt-get install伤塌、CentOS/RedHat 的 yum install 灯萍。?

但是,有些時(shí)候我們也希望從源代碼編譯安裝 PHP寸谜,例如:需要定制擴(kuò)展模塊或者需要在一臺(tái)機(jī)器上安裝多個(gè)版本的 PHP竟稳。

二、下載源碼安裝包


PHP 官方網(wǎng)站選擇適合的版本

http://php.net/releases/

在相應(yīng)的版本的鏡像下載源找到鏈接熊痴,下載示例:

wget -O php.tar.gz 'http://cn2.php.net/get/php-7.0.8.tar.gz/from/this/mirror'

解壓縮安裝包他爸,并進(jìn)入安裝包目錄:

gzip -d php.tar.gz

tar xvf php.tar

cd php-7.0.8

三、編譯配置


在源碼目錄果善,有 configure 可執(zhí)行腳本程序诊笤,用來(lái)檢查系統(tǒng)編譯環(huán)境、指定編譯參數(shù)巾陕,以適應(yīng)不同的操作系統(tǒng)環(huán)境讨跟,可以執(zhí)行:

./configure --help

查看一下編譯配置的幫助文檔:

編譯配置幫助文檔

設(shè)置編譯參數(shù):

./configure --prefix=/opt/php7 --enable-fpm --enable-mysqlnd --enable-opcache --enable-pcntl --enable-mbstring --enable-soap --enable-zip --enable-calendar --enable-bcmath --enable-exif --enable-ftp --enable-intl --with-mysqli --with-pdo-mysql --with-pdo-odbc --with-pdo-pgsql --with-openssl --with-curl --with-gd --with-gettext --with-mhash --with-openssl --with-mcrypt --with-tidy --enable-wddx --with-xmlrpc

其中:

--prefix=/opt/php7 ? 指定安裝目錄

--enable-FEATURE ? 指定開啟某功能

--with-EXTENSION 指定編譯 PHP 擴(kuò)展

注意:編譯 GD 庫(kù)的時(shí)候,需要系統(tǒng)有 libwebp/libjpeg/libpng 的庫(kù)鄙煤,可以使用 yum 或 apt-get 包管理器安裝晾匠;同理,編譯 --with-intl 國(guó)際化庫(kù)的時(shí)候梯刚,需要 libicu 庫(kù)(International Components of Unicode)

如果 icu 的版本不符合要求凉馆,可以獨(dú)立安裝 icu:

wget http://download.icu-project.org/files/icu4c/4.4.2/icu4c-4_4_2-src.tgz?

tar zxf icu4c-4_4_2-src.tgz

cd icu/source/

./configure --prefix /opt/icu4

make

make install

再 PHP 編譯參數(shù)指定目錄:

--with-icu-dir=/opt/icu4

檢測(cè)正常后,最后的執(zhí)行結(jié)果:

配置檢測(cè)成功

同時(shí)亡资,在源碼目錄下生成了 Makefile 文件澜共。

四、編譯安裝


make

make test

測(cè)試通過后锥腻,就可以安裝了:

sudo make install?

安裝目錄

進(jìn)入安裝目錄嗦董,查看安裝結(jié)果:

cd /opt/php7

./bin/php -v

安裝成功

五、修改配置文件


從源碼目錄拷貝 php.ini 文件到安裝目錄:

sudo cp php.ini-production /opt/php7/lib/php.ini

并修改其中主要的配置項(xiàng)目:

error_reporting = E_ALL & ~E_DEPRECATED 錯(cuò)誤報(bào)告類型

short_open_tag = On 開啟短標(biāo)簽

display_errors = Off 關(guān)閉在網(wǎng)頁(yè)上顯示錯(cuò)誤

log_errors = On 記錄錯(cuò)誤

error_log = /opt/logs/php_errors.log 記錄錯(cuò)誤文件位置

post_max_size = 128M 允許 post 的數(shù)據(jù)大小

upload_max_filesize = 1024M 允許上傳的文件大小

date.timezone = Asia/Shanghai 默認(rèn)的時(shí)區(qū)

復(fù)制 php-fpm.conf 配置文件:

sudo cp /opt/php7/etc/php-fpm.conf.default /opt/php7/etc/php-fpm.conf

并修改其中主要的配置項(xiàng)目:

pid = run/php-fpm.pid 進(jìn)程文件位置

error_log = log/php-fpm.log 記錄錯(cuò)誤位置

daemonize = yes 守護(hù)進(jìn)程運(yùn)行模式

user = www 運(yùn)行用戶名

group = www 運(yùn)行用戶組

listen = 127.0.0.1:9000 CGI 監(jiān)聽端口和 IP

pm = static 進(jìn)程管理器運(yùn)行模式

pm.max_children = 32 開啟子進(jìn)程數(shù)量

pm.max_requests = 500 子進(jìn)程重啟閾值

slowlog = log/slow.log 慢查詢?nèi)罩?br>

request_slowlog_timeout = 5 慢查詢閾值

request_terminate_timeout = 30 請(qǐng)求超時(shí)閾值

配置完成之后瘦黑,就可以啟動(dòng) php-fpm 京革,對(duì)外提供服務(wù)。

六幸斥、安裝擴(kuò)展


有些擴(kuò)展模塊不在源碼安裝包里存崖,必須手動(dòng)安裝,以 redis 擴(kuò)展為例睡毒。

選擇合適的版本:

https://github.com/phpredis/phpredis/releases

下載擴(kuò)展源碼:

wget -O phpredis.tar.gz 'https://github.com/phpredis/phpredis/archive/3.0.0.tar.gz'

解壓并進(jìn)入擴(kuò)展源碼目錄:

gzip -d phpredis.tar.gz

tar xvf phpredis.tar

cd phpredis-3.0.0

執(zhí)行目標(biāo) PHP 版本配置:

/opt/php7/bin/phpize

生成配置腳本 configure,并執(zhí)行:

./configure --with-php-config=/opt/php7/bin/php-config

編譯安裝:

make

make test

sudo make install

擴(kuò)展會(huì)被安裝到相應(yīng)的目錄:

/opt/php7/lib/php/extensions/no-debug-non-zts-20151012/

修改 php.ini 文件冗栗,加入擴(kuò)展:

extension=/opt/php7/lib/php/extensions/no-debug-non-zts-20151012/redis.so

重啟 php-fpm 進(jìn)程演顾,就安裝生效了供搀。

七、總結(jié)


以上便是 PHP 源碼安裝钠至、配置以及擴(kuò)展安裝的基本過程葛虐。


作者微博/微信 @Ceelog,轉(zhuǎn)載請(qǐng)注明出處 ;)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末棉钧,一起剝皮案震驚了整個(gè)濱河市屿脐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宪卿,老刑警劉巖的诵,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異佑钾,居然都是意外死亡西疤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門休溶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)代赁,“玉大人,你說(shuō)我怎么就攤上這事兽掰“虐” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵孽尽,是天一觀的道長(zhǎng)窖壕。 經(jīng)常有香客問我,道長(zhǎng)泻云,這世上最難降的妖魔是什么艇拍? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮宠纯,結(jié)果婚禮上卸夕,老公的妹妹穿的比我還像新娘。我一直安慰自己婆瓜,他們只是感情好快集,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著廉白,像睡著了一般个初。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上猴蹂,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天院溺,我揣著相機(jī)與錄音,去河邊找鬼磅轻。 笑死珍逸,一個(gè)胖子當(dāng)著我的面吹牛逐虚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谆膳,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼叭爱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了漱病?” 一聲冷哼從身側(cè)響起买雾,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎杨帽,沒想到半個(gè)月后漓穿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡睦尽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年器净,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片当凡。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡山害,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出沿量,到底是詐尸還是另有隱情浪慌,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布朴则,位于F島的核電站权纤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏乌妒。R本人自食惡果不足惜汹想,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望撤蚊。 院中可真熱鬧古掏,春花似錦、人聲如沸侦啸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)光涂。三九已至庞萍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間忘闻,已是汗流浹背钝计。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人私恬。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓交播,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親践付。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容