清除 Nextcloud Web 伺服器上的 PHP 記憶體警告

如果 Nextcloud 的管理概覽顯示 PHP 記憶體限制低於 512 MB,隨意提高該值php.ini可能無法消除警告。 Nextcloud 會檢查用於 Web 介面的 PHP 環境,而命令列 PHP 可能會載入不同的設定。請memory_limit為活動的 Web PHP 服務設定該值,重新啟動該服務,然後從 Nextcloud 的管理概覽中驗證該值。

截至2026年10月10日,Nextcloud 35的管理手冊指出,PHP的記憶體限制至少應為512MB。這是單一腳本的記憶體上限,並非保證每個PHP進程都會使用這麼多記憶體。提高記憶體限制可以確保記憶體密集型請求順利完成,但並不會增加實體記憶體;在小型伺服器上,過多的並發PHP工作進程仍然會耗盡系統記憶體。

首先要確定 Nextcloud 如何運行 PHP。

在編輯配置之前,請先確定您的 Web 技術堆疊和 PHP 版本。在 Nextcloud 管理概覽中,如果顯示了 PHP 版本,請記下版本。在 shell 中,`npm run dev`php --ini命令會顯示命令列 PHP 二進位檔案使用的設定文件,但這並不能證明 PHP-FPM 或 Apache 在處理瀏覽器請求時使用哪個檔案。

php --version
php --ini

對於典型的 Debian 或 Ubuntu 系統,PHP-FPM 通常會讀取 `<path>` /etc/php/<version>/fpm/php.ini,而 Apache 的 mod_php 通常會讀取 `<path> /etc/php/<version>/apache2/php.ini`。 CLI 配置通常位於 `<path> /etc/php/<version>/cli/php.ini`。請將 `<path>` 替換<version>為已安裝的 PHP 版本,例如 `<version> 8.3`。其他作業系統和控制面板可能會使用不同的路徑。

Nextcloud 的手冊也指出,諸如 AIO、Snap、NCP 或 Community Docker 等開箱即用的部署方案提供了預先配置的 PHP 環境。對於這些安裝,請使用部署方案支援的設定方法,而不是假設主機層級的設定方法php.ini同樣適用。

將 Web PHP 記憶體限制設定為 512 MB 或更高

PHP-FPM 與 Nginx 或 Apache 搭配使用。

備份目前 FPM 配置,然後編輯其設定檔php.ini。在 Debian 或 Ubuntu 系統上,命令可能如下所示;請根據您的伺服器版本和路徑進行調整:

sudo cp /etc/php/8.3/fpm/php.ini /etc/php/8.3/fpm/php.ini.backup
sudo nano /etc/php/8.3/fpm/php.ini

找到現有memory_limit指令並將其值設定為至少 512 MB:

memory_limit = 512M

編輯現有指令,而不是增加多個相互衝突的副本。如果在 PHP-FPM 連線池配置中設定了該指令php_admin_value[memory_limit],則該連線池層級的設定優先;如果警告仍然存在,請檢查活動的連線池檔案。

重新啟動對應的 PHP-FPM 服務,以便新的 Web 請求使用更新後的設定。例如,該服務可能名為php8.3-fpm:

sudo systemctl restart php8.3-fpm

當 Apache 使用 PHP-FPM 時,只有當您的 Web 伺服器設定也發生變更時,才需要重新啟動 PHP-FPM 並重新載入或重新啟動 Apache。請使用您的發行版中正確的服務名稱。

Apache 和 mod_php

如果 Apache 將 PHP 作為模組加載,請編輯 Apache SAPI 的配置(通常/etc/php/8.3/apache2/php.ini在 Debian 或 Ubuntu 系統上)。設定配置memory_limit = 512M,儲存文件,然後使用作業系統對應的服務名稱重新啟動 Apache:

sudo systemctl restart apache2

如果目前 Web 伺服器正在使用 mod_php,請勿編輯 FPM 文件,反之亦然。管理概覽警告中顯示的是 Web 伺服器載入的 PHP 配置。

Nextcloud 官方 Docker 映像

Nextcloud 官方 Docker 映像文件中提到了一個PHP_MEMORY_LIMIT環境變量,其預設值為 `--enable ...512M

檢查變更是否已同步至 Web 介面。

以管理員身分登入並重新開啟「管理設定」>「概覽」。確認記憶體警告已消失,且報告的 PHP 限制至少為 512 MB。重新啟動服務後重新整理頁面;先前載入的頁面可能仍顯示過時的狀態。

如果仍然顯示較低的數值,請依序檢查以下可能的原因:

  • SAPI錯誤: CLI檔已更改,但PHP-FPM或Apache使用了另一個設定。
  • PHP 版本錯誤:目前執行的 Web 服務版本與您編輯的版本不同php.ini。
  • 覆蓋: FPM 池、主機控制面板或本機 PHP 配置會覆蓋全域設定。
  • 服務未重新啟動:現有的 PHP 工作進程仍在使用先前的配置。
  • 容器配置:編輯後的主機檔案未掛載到容器中,或在變更環境後未重新建立容器。

CLI 輸出php --ini對於 cron 和 OCC 作業仍然有用,但它本身無法驗證 Web 值。請避免phpinfo()在伺服器上保留公開頁面;請改用受保護的 Nextcloud 管理概覽或主機提供的安全診斷工具。

當更高的限制還不夠時

Nextcloud 建議的 512 MB 記憶體使用量是最低配置建議,並非通用的記憶體容量計算公式。大型預覽、導入或應用程式特定操作可能需要更多內存,但大幅提高此限制會導致每個 PHP 進程消耗更多 RAM。如果主機開始使用交換空間或作業系統終止 PHP 工作進程,請降低 PHP-FPM 並發數或增加記憶體容量,而不是繼續提高每個進程的記憶體限制。在選擇更高的記憶體使用量之前,請檢查正常尖峰時段的實際記憶體使用量。

如果警告消失但原始操作仍然失敗,請在 Nextcloud 日誌和 Web 伺服器或 PHP-FPM 日誌中尋找更具體的 PHP 錯誤。記憶體限制警告與 PHP 的每個進程分配的記憶體上限有關;它不會診斷無關的上傳限制、逾時、磁碟壓力或應用程式錯誤。

官方參考資料

留下評論

將 Nextcloud 的 Web 上傳限制提高到 2 GB 以上

將 Nextcloud 的 Web 上傳限制提高到 2 GB 以上

透過調整 PHP、Nginx 或 Apache、暫存和逾時設置,讓 Nextcloud 瀏覽器上傳更大的文件,並驗證是哪個限制阻止了文件上傳。

清除 Nextcloud Web 伺服器上的 PHP 記憶體警告

設定 Nextcloud 實際使用的 PHP 記憶體限制,重新啟動對應的服務,並在管理概覽中確認 512 MB 設定。

將 S3 相容存儲桶連接到 Nextcloud 外部存儲

使用 Nextcloud 的 S3 後端,透過正確的端點、憑證、存取範圍和驗證步驟,掛載相容的物件儲存桶。

將 Nextcloud 資料遷移到外部磁碟機而不破壞存儲

將 Nextcloud 資料遷移到外部磁碟機而不破壞存儲

使用持久 UUID 掛載、維護模式、已驗證的副本和原始路徑符號鏈接,安全地將 Linux Nextcloud 資料目錄移至外部驅動器。

Nextcloud 資料庫更新後出現錯誤:我該先檢查什麼?

透過診斷 SQL 錯誤、檢查資料庫連線並安全地完成中斷的遷移,在更新後恢復 Nextcloud 存取。

使用 OCC 重設遺失的 Nextcloud 管理員密碼

使用 Nextcloud 的 OCC 命令從伺服器 shell 重設管理員密碼,並提供有關使用者名稱、權限和外部登入提供者的指導。

在為 Nextcloud 提供服務的 HTTPS 端點新增 HSTS 標頭

透過在 Apache、NGINX 或 TLS 代理程式上設定標頭來清除 Nextcloud 的 HSTS 警告,然後安全地驗證公共 HTTPS 回應。

排查 Nextcloud 應用程式安裝後報告無網路連線的問題

排查 Nextcloud 應用程式安裝後報告無網路連線的問題

追蹤 App Store 安裝失敗是否由 DNS、HTTPS、代理、TLS 或 Nextcloud 伺服器本身的設定問題所引起。

使用定時佇列來控制 Nextcloud 預覽版 CPU 峰值

將縮圖製作移至受控的後台計劃,修剪未使用的預覽尺寸,並在不使 Nextcloud 伺服器過載的情況下驗證佇列。

取得 Nextcloud 桌面同步功能,擺脫「處理文件」的束縛

找到導致 Nextcloud 同步失敗的檔案、排除規則、連線問題或用戶端資料庫狀態,然後安全地驗證上傳和下載。