WordPress升級新版 (5.3.2)注意事項


WordPress升級新版 (5.3.2)注意事項

WordPress

截至目前來看,WordPress是全球使用範圍最廣,使用量最大的CMS (內容管理系統) 或者叫做博客系統。基於PHP,MySQL的WordPress至今已有10年以上的歷史了。

豐富的插件和各式各樣的模板,使得WordPress牢牢佔據了CMS市場的前列。基於WordPress的一些模板/插件廠商也是風生水起。前一陣,有一個以色列的模板插件廠商 Elementor 宣佈獲得了光速創投 1500美元的融資。個人曾經用過Elementor,總體來講體驗不錯。

即使各類語言都不缺乏開源的CMS,都是在可預計的未來幾年,基於過去龐大的客戶基礎,以及模板,插件等成熟的生態環境,WordPress仍將牢牢佔據領先地位。

風險

既然全球如此多的企業/個人使用WordPress作為CMS,自然WordPress也成為各類黑客攻擊的對象。前一陣我看到朋友學習網絡攻防演練,就是拿WordPress練手。


WordPress升級新版 (5.3.2)注意事項

WordPresss漏洞

用某引擎搜索一下,即可發現WordPress漏洞相關的若干條記錄。

所以在此情況下,如果有新版本推出,IT的任務就是趕緊升級。晚點升級,就會承擔多一些被攻擊的風險

WordPress升級步驟

不推薦通過WordPress管理界面進行。稍微內容多一點的CMS,都會有自己的text-block或者page php。建議採用如下方法

  • 安裝新版WordPress,即下載WordPress壓縮文件並解壓縮到Web目錄下。
    • WAMP環境:<wamp>/www目錄/<wamp>
    • XAMPP環境:<xampp>/htdocs/<xampp>
  • 通常是對比<wordpress>根目錄下的配置文件,保存當前系統的配置信息,然後將<wordpress>/wp-content目錄拷貝到新版本下。/<wordpress>/<wordpress>
  • db連接配置:<wordpress>/wp-config.php文件中對數據庫名,用戶名,密碼進行修改,用以連接已有的舊版WordPress對應的數據庫。/<wordpress>
  • <wordpress>/.htaccess相關修改:將文件中的RewriteBase修改到目標目錄。/<wordpress>
  • db_version:這一步往往會被忽略。WordPress會將db_version寫入php文件,也會將db_version寫入數據庫並且會通過程序對比這兩個值。通常在升級後可以通過訪問http://xxxxx/<wordpress>/wp-admin/upgrade.php進行升級,或者直接在數據庫options表中將記錄db_version對應的值進行修改。比如WordPress5.3.2對應的db_version是45805。/<wordpress>

PHP升級

如果PHP版本不升級,還維持在PHP5左右,完成上面的步驟基本就算結束了。

但是現在新版的PHP版本已經到7.4了。而且自從7.2版的PHP後,在運行環境中,對於參數的類型檢查嚴格執行,如果類型不正確,將會出現警告。

當然我們也可以使用7.2版之前的版本可以忽略這個警告。

現在有一些企業已經開始使用Docker進行部署WordPress,在這種情況下,Docker Hub裡的新版WordPress Image對應的PHP版本基本都是7.4或者7.3。所以這個類型檢查是繞不過去的。

類型檢查告警可能會出現如下錯誤:

<code>Warning: count(): Parameter must be an array or an object that implements Countable in xxxxx.php on line 302/<code>

報錯的意思是說,調用的參數類型必須是數組或者實現Countable的對象。

這種情況下,需要檢查代碼。如果傳入的對象確實是一個數組。那麼在代碼外面套一層數組的判斷代碼就可以了。

<code>if(is_array($variablexxx){
//your code
}/<code>

或者根據實際情況進行處理。

另一類告警是關於continue的使用。

<code>"continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"/<code>

這種情況可以將代碼中的continue修改掉。

比較麻煩的是,這些報錯可能不一定來自你自己的代碼,有可能來自某些模板。

小結

升級也好,遷移也罷,對於大型的系統而言是需要進行事先的預演的,從而能夠發現問題,解決問題。這樣在生產機上實際進行就會順利一些。

這裡只是介紹了WordPress的升級,屬於比較小型的應用。然而即便如此,在升級之前,也要進行預演,測試。

隨著雲計算和容器化的發展,Git, Jenkins, Docker這樣的組合效率確實很高,事先設置好測試環境和生產環境的相關變量,測試機發布成功後,由於代碼庫一致,提供服務的Docker Image差別也不大,生產環境的發佈比過去效率提升了很多。

如果朋友們在WordPress升級過程中遇到什麼問題,歡迎留言討論。


分享到:


相關文章: