ubuntu LTS 16.04只能安裝php7及以上版本偏瓤,這里安裝的具體版本是php7.1.10
安裝相關(guān)依賴庫(kù)
依賴庫(kù)安裝
sudo apt-get update
sudo apt-get install libxml2-dev
sudo apt-get install build-essential
sudo apt-get install openssl
sudo apt-get install libssl-dev
sudo apt-get install make
sudo apt-get install curl
sudo apt-get install libcurl4-gnutls-dev
sudo apt-get install libjpeg-dev
sudo apt-get install libpng-dev
sudo apt-get install libtool-bin
sudo apt-get install bison
sudo apt-get install php7.0-dev
sudo apt-get install php-fpm
編譯安裝libiconv
在libiconv官網(wǎng)下載壓縮包蝙眶,放到/usr/local/src
下乐严,解壓刮刑,編譯安裝,這里下載的是libiconv-1.15.tar.gz
sudo tar zxvf libiconv-1.15.tar.gz
cd libiconv-1.15
sudo ./configure --prefix=/usr/local
sudo make
sudo make install
sudo ldconfig // 刷新動(dòng)態(tài)鏈接庫(kù)緩存
注意,這里是將libiconv
安裝到了系統(tǒng)默認(rèn)的lib
目錄下沐悦,安裝路徑/usr/local
不可隨意更改,否則后面會(huì)出現(xiàn)編譯錯(cuò)誤崔兴。另外彰导,執(zhí)行sudo make
之后會(huì)有如下warning
warning: remember too run 'libtool --finish /usr/local/lib'
按照warning的提示執(zhí)行一下
libtool --finish /usr/local/lib
編譯安裝PHP
編譯PHP
去PHP官網(wǎng)下載php7.1.10
壓縮包放到/usr/local/src
下,解壓敲茄,編譯安裝位谋,這里下載的是php-7.1.10.tar.gz
sudo tar zxvf php-7.1.10.tar.gz
cd php-7.1.10
sudo ./configure --prefix=/usr/local/php-7.1.10 --with-config-file-path=/usr/local/php-7.1.10/conf --with-apxs2=/usr/local/apache2/bin/apxs --with-iconv-dir=/usr/local/lib --enable-fpm --enable-mysqlnd --with-mysqli=mysqlnd --without-pear --disable-phar
sudo make ZEND_EXTRA_LIBS='-liconv'
sudo make install
注意,這里--with-apxs2
的路徑要與apache2安裝路徑一致堰燎,--with-iconv-dir
路徑要與libiconv
安裝路徑一致掏父,pear
是php的一個(gè)組件,需要專門安裝秆剪,因?yàn)閜hp5以后赊淑,pear沒什么用了,所以這里就禁用了pear仅讽。
fpm
是支持PHP的一個(gè)比較好的工具陶缺,php-fpm參數(shù)如下:
--start 啟動(dòng)
--stop 強(qiáng)制終止
--quit 平滑終止
--restart 重啟
--reload 重新平滑加載php的php.ini
--logrotate 重新啟用log文件
另外,PHP7.0啟用了mysqlnd來支持MySQL連接洁灵,具體可選的有mysqli
和pdo-mysql
饱岸,可以通過參數(shù)來配置
--enable-mysqlnd
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
安裝完成之后,會(huì)有warning
warning: remember to run 'libtool --finish /usr/local/src/php-7.1.10/libs'
按照warning的提示執(zhí)行一下
libtool --finish /usr/local/src/php-7.1.10/libs
完成之后,會(huì)在/usr/local/apache2/modules
下生成一個(gè)libphp7.so
苫费,這就是Apache的php動(dòng)態(tài)鏈接庫(kù).
PHP7.0以后不再提供默認(rèn)的php.ini
配置文件汤锨,而是在源碼目錄下提供php.ini-development
和 php.ini-production
兩個(gè)配置文件,一個(gè)用于開發(fā)環(huán)境百框,一個(gè)用于線上環(huán)境闲礼。這里我們把php.ini-production
復(fù)制到之前的php配置目錄下,作為php的配置文件
sudo cp /usr/local/src/php-7.1.10/php.ini-production /usr/local/php-7.1.10/conf/php.ini
接下來我們配置Apache解析PHP
& Apache的mysqli擴(kuò)展
配置Apache解析PHP
打開Apache的主配置文件/usr/local/apache2/conf/httpd.conf
琅翻,寫入如下配置行
// 這一行剛剛安裝php的時(shí)候位仁,系統(tǒng)應(yīng)該已經(jīng)自動(dòng)生成了,如果沒有方椎,手動(dòng)加入即可
// 配置Apache加載php動(dòng)態(tài)鏈接庫(kù)
LoadModule php7_module modules/libphp7.so
// 配置Apache解析php
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
配置Apache的mysqli擴(kuò)展
在php.ini
中加入以下配置
extension=/usr/local/php-7.1.10/lib/php/extensions/no-debug-zts-20151012/mysqli.so
在mysql-server的配置目錄下聂抢,從主配置文件my.cnf
開始遍歷配置文件,找到mysqld.sock
的路徑棠众。這里是用apt-get安裝的mysql-server-5.7
琳疏,所以mysqld.sock
路徑是/var/run/mysqld/mysqld.sock
,我們需要把這個(gè)路徑寫到php.ini
中闸拿。找到mysqli.default_socket空盼,寫入配置
mysqli.default_socket = /var/run/mysqld/mysqld.sock
重啟Apache,加個(gè)php頁(yè)面新荤,用echo phpinfo()
看看Apache能否正常解析php揽趾,是否正常加載了php的配置文件,是否支持了mysqli苛骨,以及是否能找到mysqli.default_socket是否已經(jīng)被配置篱瞎。
編譯安裝PHP的mysqli擴(kuò)展(以此為例介紹如何編譯安裝PHP擴(kuò)展)
PHP所有的擴(kuò)展都放在目錄/usr/local/php-7.1.10/lib/php/extensions/no-debug-zts-20151012/
下,我們?cè)谶@個(gè)目錄下可以看到apache的擴(kuò)展痒芝,現(xiàn)在我們來編譯mysqli擴(kuò)展俐筋。
轉(zhuǎn)到php源碼目錄下的ext
文件夾中,這里可以看到該php版本所支持的所有擴(kuò)展严衬,應(yīng)該可以看到mysqli
文件夾澄者。轉(zhuǎn)到mysqli
下,運(yùn)行phpize
/usr/local/src/php-7.1.10/ext/mysqli$ /usr/local/php-7.1.10/bin/phpize
會(huì)得到以下信息
Configuring for:
PHP Api Version: 20151012
Zend Module Api No: 20151012
Zend Extension Api No: 320151012
會(huì)在該目錄下生成configure等文件请琳,然后執(zhí)行
sudo ./configure --with-php-config=/usr/local/php-7.1.10/bin/php-config --with-mysqli
sudo make
sudo make install
注意粱挡,這里--with-php-config
并非apache配置文件所在路徑,必須設(shè)為bin/php-config
单起。安裝完之后會(huì)提示extensions所在路徑抱怔,轉(zhuǎn)到該路徑下,可以看到mysqli.so
嘀倒,即為mysqli擴(kuò)展屈留。(編譯安裝其他PHP也是同理)局冰。