lamp架構之升級php版本


當你看到這篇文章的時候 YHSPY.COM 服務器上的PHP版本已經從 5.4.27 升級到了 7.0.4,這是一個重大的飛躍。一路升級遇到了很多問題。官方聲稱PHP7最大的升級就是在語言性能上的提升,最大到達了30%。同時也去掉了很多老版本中Deprecated的函數和方法,語言整體變得更加穩定。

 

首先聲明,此文不適用於使用yum方式安裝的PHP環境的升級,只適用於使用PHP源代碼編譯安裝的PHP版本。升級之前首先需要判斷服務器上Apache的版本,根據不同的Apache版本來參考不同的官方編譯文檔。用以下命令來查看當前Apache的版本:

 

    ... (詳見原文)

 

由以上命令返回的結果可知,Apache服務器為2.X版本,所以此處應該參考官方給出的PHP編譯在Apache版本2.X上的編譯參考文檔:Apache2.X版本PHP編譯文檔,對於其他版本的Aapche或者Nginx,可以參考此處:其他版本服務器PHP編譯文檔。

 

接下來我們從PHP官方給出的鏡像地址來獲取PHP源代碼,這些源代碼將會最后被編譯並安裝在我們的服務器上。這里按照官方文檔的說明,我們使用wget命令來獲取源代碼的壓縮包,並逐層解壓,直到生成最后的源代碼文件夾。

 

... (詳見原文)

 

由於我們這里為PHP的版本升級操作,所以需要保持新版本PHP源代碼的預編譯參數和舊版本PHP源碼的預編譯參數保持一致。進入到舊版本(當前版本)PHP源碼文件夾內,使用 vi/vim命令打開文件夾內的Mkaefile文件,復制其中的 CONFIGURE_COMMAND 參數部分並整理成如下格式(去掉單引號等):

 

... (詳見原文)

 

 

其實 CONFIGURE_COMMAND 參數的值本身就是對應我們上一次PHP源碼預編譯過程的全部編譯命令(和子參數),這里順便說一下其中幾個子參數的作用。“--prefix”參數用來指定PHP安裝的主要目錄位置,“--with-config-file-path”參數主要用來指定php.ini文件的生成路徑,對於其他子參數的具體用法和說明,請在PHP源代碼文件夾內使用./configure --help命令來查看。

接下來便通過已經整理好的預編譯參數來對源碼進行預編譯操作(即編譯前的配置操作):

 

.. (詳見原文)

 

在這里為了防止出現錯誤,我們需要分開執行make編譯和make install安裝兩個操作命令,首先執行make命令來編譯源代碼。

 

 

如果在執行過程中遇到“undefined reference to `libiconv'”錯誤,請嘗試為make命令加入ZEND_EXTRA_LIBS參數,如下所示:

 

.. (詳見原文)

 

最后執行make install命令來安裝PHP環境:

 

.. (詳見原文)

 

在源代碼全部編譯完成並安裝后,便可以用以下命令來重新啟動Apache服務器:

 

.. (詳見原文)

 

至此,PHP7的升級就全部結束了,你可以通過phpinfo()函數來查看新版本PHP的相關配置,包括擴展配置和錯誤日志等常用設置是否配置正確。

 

從PHP5.X升級至PHP7.X后,一些PHP在早期版本不推薦使用的函數比如split()等都已經從PHP7移除了,所以在升級時請參考官方的升級文檔。並且,PHP7也移除了mysql相關的函數,因此只能使用PDO或其他方式來連接數據庫。

 

寫在最后,其實所謂的預編譯步驟是對源代碼編譯之前進行一些環境配置,比如指定編譯是否攜帶某一模塊,編譯生成的文件夾等。同時在執行./configure時也會同時生成Makefile文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM