php-7.2.0源碼安裝及擴展安裝

一、安裝環境
ubuntu 16.04


一、源碼安裝前準備工作


1.1、下載源碼
下載地址:http://www.php.net/downloads.php
可自行選擇版本,這裏我選擇的最新版本PHP 7.2.0,下載地址爲:http://cn2.php.net/distributions/php-7.2.0.tar.gz
wget http://cn2.php.net/distributions/php-7.2.0.tar.gz

1.2、解壓
tar -zxvf php-7.2.0.tar.gz

1.3、準備安裝目標文件夾
mkdir /usr/local/php
注:也就是源碼安裝的php到這個路徑中

二、編譯安裝
2.1、配置
cd cd php-7.2.0/


A、如果PHP搭配Apache使用,那麼配置如下
./configure --prefix=/usr/local/php \
--with-apxs2=/usr/local/apache2/bin/apxs


注:
/usr/local/apache2/bin/apxs,其中apxs是在安裝Apache時產生的,apxs是一個爲Apache HTTP服務器編譯和安裝擴展模塊的工具,使之可以用由mod_so提供的LoadModule指令在運行時加載到Apache服務器中


B、如果只是單獨安裝PHP以及MySQL的擴展,而不安裝MySQL服務,那麼需要添加下面的配置
--enable-sockets=shared  \
--with-pdo-mysql=shared,mysqlnd 或者 --with-mysql=shared,mysqlnd


此處可以選擇使用PHP的 mysql 還是 pdo 擴展,兩者選擇其一即可

C、啓動配置php-fpm

--enable-fpm

總結:執行A或者B此時可能出現錯誤
configure: error: xml2-config not found. Please check your libxml2 installation.
解決方法:
CentOS
yum install libxml2
yum install libxml2-devel


ubuntu:
apt-get install libxml2
apt-get install libxml2-dev


安裝成功後,重新運行上面的./configure命令




示例:我安裝的是不帶Apache 和 Mysql 服務器,並且使用PDO擴展,那麼配置如下

./configure --prefix=/usr/local/php \
--enable-sockets=shared  \
--enable-fpm \
--with-pdo-mysql=shared,mysqlnd


2.2、編譯
make


2.3、測試
make test


2.4、安裝
make install


2.5、複製ini
cp /php-7.2.0/php.ini-development  /usr/local/php/lib/php.ini
    把原來位於源代碼裏面的php.ini-development拷貝到/usr/local/php/lib/php.ini下,並且重命名爲php.ini

三、把php加入到系統環境變量
echo "export PATH=$PATH:/usr/local/php/bin/php"  >> /etc/profile
source /etc/profile


四、查看php版本
/usr/local/php/bin/php --version

五、安裝擴展
首先,請確保已經安裝了autoconf,如未安裝,請執行apt-get install autoconf
編譯完成之後,將會自動把mysql.so放到了默認的php擴展目錄下(phpinfo可查看,我的爲 /usr/local/php/lib/php/extensions/no-debug-zts-20090626),再修改php.ini
修改php.ini,添加一句extension=mbstring.so


5.1、mbstring擴展
1、進入源碼mbstring文件夾
cd /php-7.2.0/ext/mbstring
2、執行生成configure(假設php安裝在/usr/local/php目錄下)
/usr/local/php/bin/phpize 
3、生成makefile文件
./configure --with-php-config=/usr/local/php/bin/php-config
4、編譯&安裝
make && make install

5.2、pdo_mysql擴展
1、進入源碼pdo_mysql文件夾
cd /php-7.2.0/ext/pdo_mysql
2、執行生成configure(假設php安裝在/usr/local/php目錄下)
/usr/local/php/bin/phpize 
3、生成makefile文件
./configure --with-php-config=/usr/local/php/bin/php-config
假如你在本地安裝了mysql服務,那麼需執行下面命令
./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql/
4、編譯&安裝
make && make install
5、修改php.ini,添加一句extension=pdo_mysql.so

5.3、zlib擴展
此擴展進入源碼/php-7.2.0/ext/zlib安裝會出錯,因此先執行下面語句
1、 http://www.zlib.net/下載zlib源碼
wget http://www.zlib.net/zlib-1.2.11.tar.gz
2、解壓,配置,編譯,安裝
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11/
./configure --prefix=/usr/local/zlib
make && make install
3、重新配置、編譯、安裝PHP,增加參數--with-zlib-dir=/usr/local/zlib
./configure --prefix=/usr/local/php \
--enable-sockets=shared  \
--with-pdo-mysql=shared,mysqlnd \
--with-zlib-dir=/usr/local/zlib 

5.4、curl擴展
方法一:
1、去網站 http://curl.haxx.se/download/ 
下載libcurl源碼。我用的版本是curl-7.28.0.tar.gz
    2、解壓,配置,編譯,安裝
tar -zxvf curl-7.28.0.tar.gz
cd usr/src/curl-7.28.0
./configure --prefix=/usr/local/curl;
make && make install
   (3)重新編譯php,增加參數--with-curl=/usr/local/curl
./configure --prefix=/usr/local/php \
--enable-sockets=shared  \
--with-pdo-mysql=shared,mysqlnd \
--with-zlib-dir=/usr/local/zlib  \
--with-curl=/usr/local/curl

方法二:
1、安裝apt-get install libcurl4-gnutls-dev,如果出錯,請先apt-get update
2、進入源碼curl文件夾
cd /php-7.2.0/ext/curl
3、執行生成configure(假設php安裝在/usr/local/php目錄下)
/usr/local/php/bin/phpize 
4、生成makefile文件
./configure --with-php-config=/usr/local/php/bin/php-config
5、編譯&安裝
make && make install
6、修改php.ini,添加一句extension=curl.so

5.5、pcntl擴展
1、進入源碼pcntl文件夾
cd /php-7.2.0/ext/pcntl
2、執行生成configure(假設php安裝在/usr/local/php目錄下)
/usr/local/php/bin/phpize 
3、生成makefile文件
./configure --with-php-config=/usr/local/php/bin/php-config
4、編譯&安裝
make && make install
5、修改php.ini,添加一句extension=pcntl.so

5.6、libevent/event 擴展
由於PHP5.7以後只支持event,因此我安裝的event,但是libevent的安裝方法和event方法一樣
擴展依賴於原始的libevent庫,必須先把libevent庫安裝
1)、安裝libevent庫(http://libevent.org/)
1. wget https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz
2. tar -zxvf libevent-2.1.8-stable.tar.gz
3. cd libevent-2.1.8-stable/
4. ./configure --prefix=/usr/local/libevent-2.1.8/
5. make && make install
2)、安裝event擴展(http://pecl.php.net/package/event)
1、wget http://pecl.php.net/get/event-2.3.0.tgz
2、tar -zxvf event-2.3.0.tgz 
3、cd event-2.3.0/
4、/usr/local/php/bin/phpize 
5、./configure --with-php-config=/usr/local/php/bin/php-config --with-event-libevent-dir=/usr/local/libevent-2.1.8/
如果是libevent
./configure --with-php-config=/usr/local/php/bin/php-config --with-libevent=/usr/local/libevent-2.1.8/
6、make && make install

注:此處安裝可能遇到的問題及解決方案
問題1:configure: error: Cannot find OpenSSL's <evp.h>
解決方案:apt-get install libssl-dev

問題2:configure: error: Cannot find OpenSSL's libraries
解決方案:
find / -name libssl.so
輸出結果爲:/usr/lib/x86_64-linux-gnu/libssl.so
初步判斷它可能只會在 /usr/lib/ 下尋找 libssl.so 文件,於是:
ln -s/usr/lib/x86_64-linux-gnu/libssl.so /usr/lib
重新編譯安裝即通過。

5.7、redis擴展(phpredis)
1、下載源碼https://github.com/phpredis/phpredis/releases
wget https://github.com/phpredis/phpredis/archive/3.1.4.tar.gz
2、mv 3.1.4.tar.gz phpredis.tar.gz
3、tar -zxvf phpredis.tar.gz
4、cd phpredis-3.1.4/
5、/usr/local/php/bin/phpize 
6、./configure --with-php-config=/usr/local/php/bin/php-config
7、 make && make install 

5.8、openssl擴展
1、進入源碼openssl文件夾
cd /php-7.2.0/ext/openssl
2、執行生成configure(假設php安裝在/usr/local/php目錄下)
cp config0.m4 config.m4
/usr/local/php/bin/phpize 
3、生成makefile文件
./configure --with-php-config=/usr/local/php/bin/php-config
4、編譯&安裝
make && make install

注:此處安裝可能遇到的問題及解決方案
問題1:configure: error: Cannot find OpenSSL's <evp.h>
解決方案:apt-get install libssl-dev

問題2:configure: error: Cannot find OpenSSL's libraries
解決方案:
find / -name libssl.so
輸出結果爲:/usr/lib/x86_64-linux-gnu/libssl.so
初步判斷它可能只會在 /usr/lib/ 下尋找 libssl.so 文件,於是:
ln -s/usr/lib/x86_64-linux-gnu/libssl.so /usr/lib
重新編譯安裝即通過。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章