Skip to content
View in the app

A better way to browse. Learn more.

PHP论坛人

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Invision Community 5.0.0 ~ 5.0.x 之間的論壇版本升級

Featured Replies

------------------------------------
檢查磁碟空間
------------------------------------

df -h /var/www /var/backups

備份會同時佔用資料庫備份與網站檔案備份的額外空間,若磁碟餘裕不足(建議至少保留 2 倍於目前網站資料夾大小的空間),

應先清理或擴充磁碟,避免備份過程中磁碟寫滿導致備份檔案損毀。




------------------------------------
暫時關閉論壇(維護)
------------------------------------

目的:避免升級過程中,會員操作導致資料寫入錯誤或不一致

論壇後端 -> 系統 -> 一般配置 -> 關閉或開啟論壇 -> x 關閉

關閉的原因 -> 建議填寫明確資訊,例如:「系統升級維護中,預計於 XX:XX 完成,造成不便敬請見諒」。

儲存 ->







-----------------------------------
下載Invision Community最新版本
-----------------------------------

建議在本機(例如 Windows)先解壓縮檢查內容,雖然升級是採「直接覆蓋檔案」的方式,但可以先刪除不必要的檔案

再重新壓縮為 ips.zip









------------------------------------
先備份資料庫、網站目錄
------------------------------------

升級前先備份DB資料庫、Web網站目錄,避免升級失敗無法回復

備份指令

bash /usr/local/sbin/backup.sh



備份完成後,務必確認備份檔案確實產生且大小合理(非 0 byte 或異常過小),

可搭配既有的 check_backup.sh 備份監控腳本再次確認

備份監控指令

bash /usr/local/sbin/check_backup.sh







-------------------------
停止Nginx (重要)
-------------------------

在進行檔案替換前,請務必先停止Nginx,確保檔案替換時不會產生衝突

systemctl stop nginx



為什麼要先停?

避免解壓縮覆蓋檔案的過程中,剛好有使用者請求正在讀取半新半舊、狀態不一致的檔案,造成前台顯示錯誤或資料異常。



----------------------------------------------------------------------
使用SFTP上傳Invision Community論壇的最新版本 (ips.zip)
----------------------------------------------------------------------

使用SFTP上傳最新版本 ips.zip

SSH登入,前往論壇根目錄,解壓縮Invision Community 最新版本並覆蓋檔案

cd /var/www/域名.com




確認已安裝 unzip

which unzip || apt install unzip -y




解壓縮前的安全防護:排除本地設定檔(unzip -o 會強制覆蓋同名檔案)

雖然IPS官方發行包通常不包含 conf_global.php(資料庫連線設定)與 constants.php(Redis 連線設定)這類站台專屬的本地設定檔,

但為求保險,解壓縮時建議明確排除這兩個檔案,避免萬一官方包內剛好含有同名範例檔案,導致正式站設定被覆蓋:

提醒:若站台還有其他自訂、且不屬於官方發行包內容的檔案(例如自訂的 robots.txt、自訂上傳目錄內的設定檔),也應一併加入 -x 排除清單,避免被官方包覆蓋。


unzip -o ips.zip -x "conf_global.php" "constants.php"






解壓縮完成後刪除壓縮檔

rm ips.zip




修正擁有者與權限

chown -R www-data:www-data /var/www/域名.com

cd /var/www/域名.com





確認輸出顯示為 www-data www-data
ls -l




為了主機安全,設定標準檔案權限

將所有「目錄」設為 755
find /var/www/域名.com -type d -exec chmod 755 {} +


將所有「檔案」設為 644
find /var/www/域名.com -type f -exec chmod 644 {} +




效能提醒:find 搭配 -exec ... +(一次傳入多個檔案給 chmod,減少呼叫次數,效果等同於但通常快於逐一呼叫的 -exec ... \; 寫法)

對大量檔案的論壇目錄執行權限遞迴修改,在 2 vCPU 主機上仍屬於中度 I/O 密集操作,若網站檔案數量龐大(例如附件、圖片眾多),

這個步驟可能需要數分鐘,屬正常現象,不需要中途取消重跑。




----------------------------------
強化設定檔權限
----------------------------------

修改權限為 640

chmod 640 /var/www/域名.com/conf_global.php

chmod 640 /var/www/域名.com/constants.php



重點提醒:權限遞迴指令會把目錄下所有檔案統一改為 644,這會把 conf_global.php 與 constants.php 原本加固過的 640 權限打回原形。

因此權限加固步驟必須放在遞迴設定之後執行,順序不可顛倒,這是許多教學文章容易忽略的細節。







--------------------------------------
啟動Nginx
--------------------------------------

測試語法
nginx -t


啟動Nginx,啟動Web服務
systemctl start nginx


狀態
systemctl status nginx


重啟PHP
systemctl restart php8.3-fpm





------------------------
升級論壇
------------------------

瀏覽器進入論壇

https://域名.com/admin/upgrade/


依照畫面指示,登入管理員帳號 -> 開始升級過程 -> 完成升級



注意:升級過程請勿關閉瀏覽器分頁或中斷網路連線,中途中斷可能導致資料庫結構更新到一半,造成資料不一致,屆時只能依賴前面備份的資料庫還原重來。

若升級項目較多、耗時較長,建議保持該分頁在前景執行,避免瀏覽器將背景分頁的網路請求延遲處理。





----------------------------------
升級完成後,開啟論壇
----------------------------------


論壇後端 -> 系統 -> 一般配置 -> 關閉或開啟論壇 -> v (是) -> 儲存



論壇後端 -> 系統 -> 獲得支援 -> 清除系統快取

在「獲得支援」頁面,論壇通常會主動提示尚待處理的問題(例如缺少的 PHP 擴充套件、檔案權限異常等),請逐項確認排除,不要略過。








------------------------
更新中文語言包
------------------------


如果有新版本的IPS中文包,則需要更新(覆蓋),請依照說明進行覆蓋更新


更新前建議同樣先備份現有語言包檔案,避免新語言包翻譯不完整導致部分介面顯示空白或英文原文






------------------------
重建網站地圖
------------------------

論壇後端 -> 系統 -> 搜尋引擎最佳化 -> 右上方的 重建網站地圖




----------------------------------
重建搜尋索引
----------------------------------

論壇後端 -> 系統 -> 搜尋 -> 右上方的 重建搜尋索引 -> 同意


若已啟用 Elasticsearch/OpenSearch,重建搜尋索引請務必參照資源監控建議(離峰時段執行、全程監控記憶體),避免在 2GB RAM 主機上造成 OOM。

部分版本升級可能連帶調整搜尋索引的欄位結構(mapping),即使原本索引狀態正常,升級後仍建議完整重建一次,確保搜尋結果與新版程式邏輯一致。




-----------------------------------------------
升級後完整驗證
-----------------------------------------------

[ ] 前端首頁、主題頁、會員個人頁、發文功能實際操作測試一輪



[ ] 後端各主要功能頁面(會員管理、外掛管理、系統設定)能正常開啟

若使用第三方插件或模板主題,也請準備升級新版本

升級後請測試論壇功能,若有問題,在論壇後端的支援頁,關閉部分第三方插件,確認是否為第三方插件的問題



[ ] 檢查論壇系統日誌是否有新增的錯誤或警告

論壇後端 -> 系統 -> 支援 -> 系統日誌



[ ] 確認排程任務(Cron / IPS論壇背景任務)仍正常執行:

cat /etc/cron.d/forum-backup


並在論壇後端「系統 -> 進階配置 -> 使用Cron (推薦) -> 日常維護任務需要定期執行。瀏覽任務 -> 任務」頁面確認任務執行紀錄是否持續更新。



[ ] 若使用 Redis / Valkey,確認快取引擎狀態仍顯示為 Redis(升級過程有極小機率會重置部分設定):

論壇後端 -> 系統 -> 獲得支援



[ ] 若使用 Elasticsearch/OpenSearch,確認搜尋引擎狀態仍正常,且可實際搜尋出結果,而非僅看連線狀態顯示正常。



[ ] 確認 TLS 憑證與 HTTPS 訪問正常(憑證自動化不受論壇程式升級影響,但仍建議順手確認):

curl -I https://域名.com/



[ ] 觀察系統資源是否恢復正常水位,排除升級過程殘留的異常高負載:

htop


free -h



[ ] 確認 conf_global.php 與 constants.php 的權限仍維持 640,未被任何後續操作意外改回 644:

ls -l /var/www/域名.com/conf_global.php


ls -l /var/www/域名.com/constants.php




---------------------------------------------
若升級失敗的還原方案
---------------------------------------------

若升級過程發生無法排除的嚴重錯誤(例如資料庫結構更新中斷、白畫面且系統日誌無明確線索),應執行還原:

1. 停止 Nginx 與 PHP-FPM,避免還原過程中仍有請求進來。

2. 使用備份的資料庫備份檔還原資料庫。

3. 使用備份的網站目錄備份檔還原網站檔案(覆蓋回升級前狀態)。

4. 還原完成後重新啟動服務,並實際驗證論壇恢復到升級前可正常運作的狀態。

5. 待釐清升級失敗原因後(可參考官方支援或社群討論),再擇期重新嘗試升級。

還原是最後手段,前提是備份確實完整且可用,這也是為什麼升級前的備份步驟絕對不能省略或隨便帶過。




---------------------------------
注意事項總結
---------------------------------

若使用第三方外掛或模板主題,升級前務必確認是否有推出相容於新版本的更新,未更新的外掛可能導致升級失敗或升級後功能異常。


升級後請徹底測試論壇各項功能,若發現問題,可先至論壇後端的「支援」頁面暫時關閉部分第三方外掛,逐一排查是否為外掛相容性問題所致,而非貿然懷疑核心程式或伺服器環境設定。


有測試站可用時,務必先在測試站演練整套升級流程,正式站升級才不會是第一次「實戰」,這對點版本升級雖然風險相對較低,仍是值得維持的紀律。


建議每次升級前,實際查閱官方發行紀錄頁面,留意是否有與搜尋引擎整合、快取機制、或 PHP 最低版本需求相關的變更公告,而非僅憑經驗假設「點版本升級應該都差不多」。

Edited by Jack

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.