你的外掛不工作。您的網站未載入。您不斷看到“Allowed memory size exhausted”錯誤,並且一直說增加您的PHP記憶體限制。那是什麼,你如何解決它?
PHP記憶體限制的存在是為了阻止佔用RAM的資源使您的網站崩潰。但有時它也可能導致問題,例如當您安裝需要一點額外功能的外掛並最終切斷對您網站的訪問時。
當您因記憶體不足而遇到白屏宕機時,您需要立即修復此問題。讓我們來看看PHP記憶體限制是什麼,以及如果達到資源上限如何解決它。
什麼是PHP記憶體限制?
PHP記憶體限制設定您網站上的任何指令碼可以使用的最大記憶體量。但這究竟是什麼意思?
您的網站由伺服器提供支援,這些伺服器只是用於保持網站後端執行的專用計算機。與普通計算機一樣,它們使用處理器、儲存和RAM(也稱為記憶體)等元件。
RAM是伺服器最重要的部分之一。每個程式和應用程式都會佔用一點記憶體。程式越密集,佔用的記憶體就越多。當您的記憶體不足時,您的網站將執行緩慢甚至拒絕載入。
Web應用程式(例如WordPress外掛)是可能佔用伺服器記憶體的眾多事物之一。通常,這些應用程式佔用的空間非常小,除非您的主機給您的記憶體非常少,否則您永遠不會遇到任何問題。
但是對於任何PHP應用程式的指令碼可以在您的伺服器上佔用多少記憶體也有一個硬性上限。當其中一個指令碼超過限制時,您就會開始遇到問題。
您會看到一個帶有錯誤的白屏,甚至可能會禁止您訪問整個網站。
為什麼有記憶體限制?
想象一下,您的伺服器出了點問題。也許一個程式陷入無限迴圈並不斷佔用越來越多的記憶體,或者攻擊者誘騙您安裝執行惡意指令碼的東西以佔用您的所有資源。
當PHP程序失控時,記憶體限制會在它們導致整個伺服器崩潰或耗盡當月所有分配的資源之前對其進行硬性阻止。
大多數合法的PHP指令碼都很小。每個單獨的指令碼應該只佔用少量的RAM,除非你有一個不尋常的程式需要在一個指令碼中比大多數程式作為一個整體佔用更多的資源。這些型別的外掛當然存在,但很少見。
如果您的記憶體不足,則很有可能存在損壞或惡意的PHP程式,因此會出現記憶體限制錯誤。
但有時你確實在使用需要額外記憶體的大型外掛。一些Web主機還將PHP記憶體限制設定得非常低,因此即使您沒有安裝異常耗電的應用程式,也會導致出現錯誤。
無論哪種方式,您都會很快遇到記憶體耗盡錯誤。
記憶體耗盡錯誤
所以你遇到了記憶體耗盡錯誤。您可能會在整個站點中或在執行某些功能(例如提交表單)時遇到帶有錯誤訊息的白屏。
出現在WordPress中的記憶體限制耗盡錯誤
這是一個嚴重的問題,尤其是當它影響您的整個網站時。過去的每一個小時都會有很多迷路的遊客。
罪魁禍首可能是一個非常大或配置錯誤的外掛。因為WordPress外掛是用PHP編碼的,所以它們受PHP記憶體限制的限制。
您可以通過一一禁用外掛來找到導致問題的外掛,直到重新訪問您的站點。一旦你確定了它,檢查文件並檢視它是否說明它需要執行多少記憶體。
如果沒有跡象表明它應該是一個非常強大的外掛,您可能需要向外掛開發人員提交一張票,因為它可能是錯誤的。請記住,PHP記憶體限制僅影響單個指令碼,而不影響整個外掛。因此,指令碼很有可能陷入無限迴圈或其他故障。
這個問題也可能在你身上。也許您的記憶體限制設定得太低,因此只有最小的外掛才能正確執行。或者,也許您正在嘗試安裝一個外掛,該外掛要求您將限制提高到比正常水平更高的水平。
無論哪種情況,您都應該嘗試增加PHP記憶體限制。現在讓我們向您展示如何做到這一點。
如何在WordPress中增加PHP記憶體限制
在做任何事情之前,有一種簡單的方法可以檢查您當前的PHP記憶體限制,而無需挖掘任何檔案。如果您執行的是WordPress 5.2或更高版本,請轉到後端的工具 > 站點健康執行狀況。
如果看不到,請安裝執行Health Check & Troubleshooting。
在WordPress中檢視站點健康資訊
在資訊選項卡下,您將看到您的PHP記憶體限制。如果它已經設定得相當高,那麼您的一個外掛可能只是被破壞了。
但是,如果您發現它非常低,則需要通過編輯wp-config.php檔案來增加它。
這並不總能解決問題。最終,PHP記憶體限制由您的Web主機設定。有時,您的站點設定為使用的資源少於主機提供的資源,調整檔案可以解決此問題。但是如果他們的硬編碼限制太低,無論你手動設定多高,你都無法真正增加它。
但值得一試,所以讓我們現在去編輯那個檔案。
PHP記憶體限制是多少?
不同的伺服器提供商所設定的限制都不太一樣,稍微良心的伺服器提供商可能會給出256MB的預設PHP記憶體限制。這對於99%的WordPress外掛來說應該綽綽有餘,而且實際上遠遠超過了大多數外掛所應採用的。
它可能仍然值得通過並確保它沒有在WordPress的設定中無意中設定得太低。有可能某些東西改變了數量並減少了您可以訪問的資源數量。
如何通過FTP更改PHP記憶體限制
要編輯wp-config.php檔案,您需要使用FTP或SFTP訪問您的站點。這允許您編輯影響站點執行方式的敏感內部檔案。
你只會改變一條線,所以應該很容易。首先安裝FileZilla或您選擇的其他FTP客戶端。它是免費的,所以不用擔心。在開始之前,您還應該備份您的網站。在編輯核心檔案時很容易意外破壞某些東西。
開啟FileZilla並輸入您的憑據。片刻之後,您應該連線到您的站點。
單擊公共資料夾並找到wp-config.php。如果找不到public或public-html,它可能被稱為root、www或您的網站名稱。
在FileZilla中查詢wp-config
開啟wp配置。注意不要編輯PHP記憶體限制行以外的任何內容,因為這是一個敏感檔案,可能會破壞您的網站。瀏覽它,直到找到這一行:define(‘WP_MEMORY_LIMIT’, ‘256M’);
出現在wp-config中的WP記憶體限制
更改此處列出的數字,儲存檔案,然後關閉FileZilla。
如何在cPanel中更改PHP記憶體限制
有些主機不允許您通過FTP編輯檔案。相反,他們可能會讓您訪問cPanel。如果您遇到這種情況,請不要擔心——您也可以通過這種方式更改您的PHP記憶體限制。
第一步:使用主機提供的憑據登入cPanel。在主螢幕上,您將看到一個帶有選擇PHP版本按鈕的軟體部分。
在cPanel中選擇PHP版本
單擊它,然後在螢幕頂部,您將看到Switch to PHP options。向下滾動,直到看到帶有下拉選單的memory_limit 。單擊它並將其更改為您想要的設定。單擊應用,您就完成了。
不是每個人都會有選擇PHP版本選項。相反,您可能會看到MultiPHP Ini Editor 。如果是這種情況,您的步驟會有所不同。
cPanel中的MultiPHP Ini編輯器
您需要單擊它,然後在下一個視窗中,在Configure PHP INI basic settings下,您應該開啟下拉選單並選擇您的域。找到memory_limit部分並輸入您想要的數字。單擊應用以儲存您的更改。
您也可以嘗試使用cPanel的檔案管理器。這與通過FTP訪問您的站點非常相似。在主頁的檔案部分下,單擊檔案管理器。找到您的public/public-html資料夾(或任何可能被稱為的資料夾)並開啟wp-config.php。
找到上一節中概述的WP_MEMORY_LIMIT行,並將數字更改為您想要的。儲存您的更改並確保應用它們,這就是您需要做的所有事情。
PHP記憶體限制應該是多少?
當您更改記憶體限制時,您的第一個衝動可能是將其設定為900MB 或類似的值——儘可能高。但這實際上可能是一個非常糟糕的主意。
如果您網站上的指令碼中斷,它可能會迅速失控並使您的整個伺服器崩潰。即使您的站點託管在功能強大的硬體上,一個指令碼佔用所有記憶體仍可能導致嚴重問題。
錯誤配置的指令碼異常繁重,但沒有破壞到導致問題的程度,也可能被忽視。大多數PHP指令碼都很小,記憶體限制錯誤是後端出現問題的警告訊號。將其設定得太高,您可能會在不知不覺中搞砸指令碼,使您的網站陷入困境。
您應該將PHP記憶體限制設定得儘可能低,同時仍然允許您的站點正常執行。
128MB是一個很好的基準。這是相當大的記憶體量,可以處理大多數密集型外掛。如果您知道您將需要一些額外的功能,那麼256MB甚至可以涵蓋最重的外掛。如果你確定你有一個真正的強者,512MB是你應該設定的絕對最大值。在90%的情況下,您永遠不需要將記憶體限制提高到256 MB以上。
如果更改記憶體限制不起作用怎麼辦?
如果在編輯您的PHP檔案後您仍然遇到記憶體錯誤,則問題之一是兩個問題之一:您的主機分配的資源很少,或者您的伺服器上有一個PHP指令碼佔用了太多的記憶體。
同樣,您應該檢查並禁用您的外掛,直到您確定罪魁禍首。使用128-256MB記憶體,沒有外掛應該佔用這麼多空間而不在文件中的某處提及它。禁用它並通知外掛作者發生了什麼。
即使在所有外掛都被禁用後仍然遇到錯誤?一定有一些衝突或其他PHP應用程式導致了問題。這超出了您自己能夠處理的範圍,因此請向您的網路託管服務商尋求幫助。
如果問題根本不是外掛,那麼責任可能在於您的主機將記憶體限制設定得太低。您可能正在使用共享主機,它因分配非常少量的記憶體而臭名昭著 – 這是可以理解的,因為如果一個站點使用過多的RAM,它會使整個系統陷入數十個其他網站的困境。
您在這裡唯一的選擇是升級到提供更多資源的計劃。這可能最終代價高昂,特別是如果您只是想在新站點上安裝一個密集的外掛。如果您還沒有很多訪客,那麼從升級中獲得的所有其他資源都不會對您有太大幫助。
您還可以切換到提供更多記憶體的主機。
小結
PHP記憶體限制的存在有一個非常正當的原因:您不希望流氓程序佔用比預期更多的RAM。但是,當您在使用合法外掛時達到極限並遇到白屏宕機時,這可能會很煩人。
最後,取決於您的主機您可以訪問多少PHP記憶體。如果他們設定的標準太低,就不可能提高。
但是,有時您的網站使用的資源會比您真正可以訪問的資源少。在這種情況下,可以增加你的記憶力。嘗試將其設定為128或256MB,因為您不希望它太高。
如果這些方法都不起作用,則可能是缺少分配的資源導致了問題,而不是需要更改的設定。聯絡您的主機並詢問如何獲得更多,或切換到提供更大記憶體的主機,它可以為您提供比您需要的更多記憶體。
評論留言