PHP內存不足錯誤(Allowed memory size exhausted)是許多網站管理者和開發者常見的困擾,尤其是在使用WordPress或大型PHP應用時。本文將系統性說明造成PHP內存不足的原因、如何正確診斷問題、修改php.ini或wp-config.php中memory_limit的最佳實踐,以及進一步的伺服器配置優化建議。讀完本篇,你將能:
- 了解PHP內存不足錯誤的成因及常見情境
- 學會調整memory_limit參數,解決常見錯誤
- 掌握伺服器層級的性能優化技巧,提升網站穩定度與速度
- 避免常見的設定誤區,確保網站安全與效能最大化

文章目錄
Toggle認識PHP內存不足錯誤的成因與表現
什麼是Allowed memory size exhausted錯誤?
當PHP腳本執行時超出預設或設定的記憶體限制(memory_limit),就會觸發「Allowed memory size of XXX bytes exhausted」的錯誤。這通常發生於需要處理大量資料、圖片、或複雜運算時,尤其在WordPress網站上常見。
常見造成內存不足的原因
- 網站流量激增,導致資源消耗劇增
- 執行大型匯入、批量處理或備份任務
- 外掛或主題品質不佳,記憶體洩漏
- 圖片等媒體檔案批量處理未優化
- PHP預設memory_limit過低
內存不足對網站的實際影響
內存不足不僅會導致前台或後台頁面無法顯示、報錯,還可能造成資料遺失、SEO排名下滑,甚至影響網站用戶體驗及商業營運。
診斷PHP內存不足的流程與工具
如何辨識內存不足錯誤訊息
錯誤訊息通常類似以下格式:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 123456 bytes) in /path/to/file.php on line 123
- Allowed memory size of 134217728 bytes = 128MB
- tried to allocate 123456 bytes = 嘗試分配的額外記憶體
推薦診斷工具與方法
- 檢查PHP錯誤日誌(error_log)
- 使用WordPress的健康檢查工具
- 安裝WP Server Stats或Query Monitor等外掛
- 伺服器層級可用htop、top、free等指令觀察資源消耗
解決PHP內存不足的實用方案
調整memory_limit的三大方式
- 編輯php.ini
- 修改wp-config.php(WordPress專用)
- .htaccess或ini_set動態設定
方法一:直接編輯php.ini(全域設定)
步驟說明:
- 透過SSH或檔案管理器找到伺服器上的php.ini檔案,常見路徑如
/etc/php/8.1/apache2/php.ini或/etc/php.ini - 使用文字編輯器打開,搜尋
memory_limit - 修改設定值,例如:
memory_limit = 256M - 儲存檔案後重啟Web伺服器(如Apache或Nginx)
建議數值設定:
- 一般WordPress網站建議設為
128M ~ 256M - WooCommerce或多媒體網站建議
256M ~ 512M - 大型專案或特殊需求可視情況提高
方法二:修改wp-config.php(針對WordPress網站)
步驟說明:
- 用FTP或檔案管理器找到網站根目錄下的
wp-config.php - 在檔案底部
/* That's all, stop editing! Happy publishing. */上方新增:define('WP_MEMORY_LIMIT', '256M'); - 高階用戶可另外設置
WP_MAX_MEMORY_LIMIT,供後台耗資源工作(如匯入、備份)用。define('WP_MAX_MEMORY_LIMIT', '512M'); - 儲存並重新整理網站,確認錯誤是否解決
注意:部分主機商會限制最高memory_limit,若設定無效需聯繫主機商協助。
方法三:.htaccess或ini_set動態設定
- .htaccess設定(適用於Apache):
php_value memory_limit 256M - 單一PHP檔案快速測試(僅限該檔案):
ini_set('memory_limit', '256M');
使用限制說明: 部分主機商禁用這類動態設定,若無效請改用php.ini或wp-config.php。
伺服器配置優化與進階效能提升建議
全面檢視伺服器資源分配
- 升級主機方案(如VPS、雲端主機)
- 提升RAM容量,減少共用資源爭奪
- 檢查是否有其他高耗資源應用影響PHP運作
優化PHP運行環境
- 升級PHP版本(建議使用PHP 8以上,效能提升明顯)
- 安裝與設定OPcache,提升PHP腳本執行效率
- 移除不必要的PHP擴展,降低資源消耗
WordPress專屬效能優化
- 定期清理未使用的外掛與主題,避免記憶體洩漏
- 使用快取外掛(如W3 Total Cache、WP Super Cache等)
- 圖片優化(壓縮、延遲載入)減少運算壓力
- 選擇高效能主機商,檢查PHP執行環境是否支援自訂memory_limit
監控與預防未來問題
- 安裝伺服器監控工具(如New Relic、Zabbix)
- 設定自動警報,提前發現資源異常
- 定期檢查PHP錯誤日誌,主動追蹤潛在問題
實務經驗與案例分享
真實案例:流量暴增導致內存不足的處理流程
某電商網站在行銷活動期間流量暴增,出現大量「Allowed memory size exhausted」錯誤,導致部分頁面無法正常顯示。經診斷後發現,原有的memory_limit僅為128M,且網站有多個高資源消耗外掛。透過調升php.ini至256M、移除冗餘外掛、升級至PHP 8.1,網站成功恢復穩定運作,並且效能提升約30%。
專家建議:調整memory_limit的注意事項
- 記憶體不是越高越好,過高可能掩蓋程式效能問題
- 建議搭配優化資料庫查詢、減少冗餘程式碼
- 調整memory_limit後,應配合壓力測試確認是否足夠
- 如長期需極高memory_limit,建議檢討應用架構或考慮分散式處理
常見問題與解答
PHP內存不足錯誤只要調高memory_limit就能解決嗎?
不一定。雖然調高memory_limit可暫時解決問題,但若程式有記憶體洩漏、外掛品質不佳或伺服器資源不足,仍可能再次發生錯誤。建議同時優化程式與伺服器配置。
我已修改php.ini,但memory_limit還是沒變,怎麼辦?
請確認是否修改正確的php.ini(可用phpinfo()查詢加載檔案路徑),且修改後已重啟Web伺服器。如使用共用主機,可能需聯絡主機商調整。
WordPress下WP_MEMORY_LIMIT和php.ini的memory_limit誰優先?
一般來說,php.ini的memory_limit為全域上限,WP_MEMORY_LIMIT則是WordPress執行時的需求值。若php.ini限制太低,wp-config.php設定無效。
設定過高memory_limit有什麼風險?
若memory_limit設過高,單一PHP程序可佔用過多記憶體,可能導致伺服器其他程序資源不足甚至當機。建議依實際需求設定合理數值。
有哪些外掛或工具可協助監控WordPress內存使用狀況?
推薦WP Server Stats、Query Monitor、Health Check等外掛,或伺服器層級工具如htop、New Relic等。
本站作者為資深雲端主機與WordPress網站維運顧問,10年以上實戰經驗,多次協助企業網站解決高流量下的效能瓶頸。內容參考官方PHP文件與WordPress Codex,確保資訊準確可靠。





