代码输入中...2018-08-02 21:55:26
下載解壓縮
去php官方下載頁面,隨便選擇一個你的伺服器所在國家的鏡像,滑鼠右鍵複製連結。
$ wget http://am1.php.net/get/php-7.0.0.tar.gz/from/this/mirror
解壓縮下載到的壓縮套件
$ tar xf php-7.0.0.tar.gz$cd php-7.0.0
安裝前配置
解決依賴套件
yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel
利用linux的make安裝方式,我們需要在make之前對軟體的編譯進行設定。這裡要留意,如果編譯之前沒有配置對應的選項,會導致不產生某些模組,後面可能會遇到問題。
./configure --prefix=/usr/local/php7 \--with-config-file-path=/usr/local/php7/etc \--with-config-file-scan-dir=/usr/local/php7/etc/php.d \--with-apxs2=/usr/local/apache/bin/apxs \--with-mcrypt=/usr/include \--enable-mysqlnd \--with-mysqli \--with-pdo-mysql \--with-gd \--with-iconv \--with-zlib \--enable-xml \--enable-shmop \--enable-sysvsem \--enable-inline-optimization \--enable-mbregex \--enable-mbstring \--enable-ftp \--enable-gd-native-ttf \--with-openssl \--enable-pcntl \--enable-sockets \--with-xmlrpc \--enable-zip \--enable-soap \--without-pear \--with-gettext \--enable-session \--with-curl \--with-jpeg-dir \--with-freetype-dir \--enable-opcache
上面的這段配置,藍色選項根據你的伺服器部署,修改成為你自己的實際路徑。
編譯安裝
原本在linux中,在configure之後,只需要make就可以進行編譯了,但是由於不同的環境,會出現不同的錯誤,例如我的伺服器上,出現了提示libiconv錯誤,我往上還看到libmcrypt錯誤。所以,在編譯的時候,我們可能需要根據編譯中出現的情況,安裝對應的一些模組或軟體環境。如果編譯錯誤後無法繼續編譯,可以使用make clean再來編譯。
我再編譯的時候,出現了libiconv錯誤,同時,我們的伺服器是雙核的,所以,我用了下面的命令進行編譯:
$ gmake -j2 ZEND_EXTRA_LIBS='-liconv'
-j2表示用雙核cup去編譯,編譯速度更快。總之,編譯中出現了什麼錯誤,就到網路上去查怎麼解決。
完成編譯之後,進行安裝即可。
$ make install
設定apache
如果上面的編譯安裝正常,由於我們設定了apxs選項,所以在編譯的時候,make會對apache的apxs進行呼叫操作,結果就是在apache的安裝目錄下的modules目錄下產生libphp7.so,並在apache的設定檔httpd.conf中增加一行
LoadModule php7_module modules/libphp7.so
一看就明白了,就是讓apache去載入一個新的libphp7.so模組。但我們還是要對httpd.conf進行修改,重新設定apache。找到LoadModule php,你會發現,竟然出現了兩行LoadModule,同時載入了php5和php7,如下:
LoadModule php5_module modules/libphp ##我們把第一行給註解掉,還要增加一個PHPIniDir的設定項,也就是修改為如下:
#LoadModule php5_module modules/libphp5.soLoadModule php7_module modules/libphp7.soPHPIniDir /usr/local/php7/etc重啟apache,現在可以寫一個phpinfo去試試看。 php的設定檔在php預設安裝狀態下你可能發現 /usr/local/php7下沒有etc目錄,也就沒有php.ini檔。這是正常的,不過你可以自己創建php.ini,也可以從php源碼目錄中找到兩個php.ini-xxx文件,拷貝一個過去,改名為php.ini即可。
cd ~/php-7.0.0mkdir /usr/local/php7/etccp php.ini-production /usr/local/php7/etc/php.ini如果你的伺服器上面還安裝了mysql,其實不用再做其他配置,我們在configure的時候,讓php7也支援mysql,如果你原本的lamp環境中已經可以正常連線mysql了,那現在php7其實也可以正常連接mysql,mysql不需要做任何設定修改。