PHP內存不足錯誤(memory exhausted)是許多網站管理者和開發者常遇到的問題。本文將深入解析PHP內存不足錯誤的成因、常見情境與診斷方式,並完整指導你如何透過修改php.ini或wp-config.php中的memory_limit值來解決問題。此外,也會介紹伺服器層級的配置優化技巧,包括內存管理、效能監控和安全性提升。讀完本篇,你將能夠有效排除內存相關錯誤,並優化你的PHP網站或應用程式的運行效率。
文章目錄
Toggle認識PHP內存不足錯誤
什麼是PHP內存不足錯誤
PHP內存不足錯誤通常會出現類似下列訊息:
Fatal error: Allowed memory size of X bytes exhausted,
意味著執行中的PHP程式已超出可用的記憶體上限。這限制可防止單一腳本佔用過多系統資源,影響伺服器穩定性。
常見發生情境
- 網站訪問量突然攀升,導致資源消耗劇增
- 撰寫或執行大量數據處理、匯入或備份腳本
- WordPress等CMS安裝過多插件或主題
- 圖片、檔案或資料庫操作過於複雜
內存不足對網站的影響
內存不足不僅導致頁面無法顯示,還可能造成資料遺失、網站崩潰,甚至影響SEO排名。因此,及時解決並優化PHP內存配置至關重要。
PHP內存配置原理與設定位置
PHP內存管理機制
PHP執行程式時,會根據 memory_limit 設定,限制每個腳本可使用的最大內存,預設值常見為128M或256M。然而,複雜的應用或高流量網站常需調高此限制。
主要配置檔案介紹
- php.ini:伺服器全域PHP設定檔,影響所有PHP應用。
- .htaccess:Apache伺服器下可覆寫部分PHP參數。
- wp-config.php:WordPress特有設定檔,可調整本網站PHP內存限制。
- ini_set():於程式中動態設定。
內存限制相關參數比較表
如何診斷PHP內存不足錯誤
查看錯誤訊息
記錄檔(error_log)是排查PHP錯誤的重要依據。可透過FTP或主機管理面板下載 error_log,搜尋 “Allowed memory size” 關鍵字。
使用phpinfo()檢查設定
- 建立名為
phpinfo.php的檔案,內容如下:<?php phpinfo(); ?> - 上傳至網站根目錄,以瀏覽器開啟檢視
memory_limit設定值及php.ini路徑。
實務經驗分享
曾遇過WordPress網站因大量圖片上傳,導致「Allowed memory size exhausted」錯誤。透過分析 error_log 與phpinfo(),確認memory_limit僅64M,後續調整到256M後即順利解決。
修改php.ini的memory_limit值
步驟一:尋找php.ini位置
- 利用phpinfo()頁面,檢查「Loaded Configuration File」欄位。
- 若有多版本PHP,務必確認正確版本之php.ini。
步驟二:編輯php.ini檔案
- 使用SSH或FTP下載php.ini。
- 搜尋
memory_limit關鍵字。 - 將原本數值(如128M)調高,例如:
memory_limit = 256M
- 儲存檔案。
步驟三:重啟Web伺服器
修改php.ini後,需重啟Apache、Nginx或PHP-FPM,以應用新設定。
常見錯誤與排除
- 未重啟服務導致設定未生效。
- php.ini權限設定錯誤。
- 多版本PHP造成設定檔混淆。
使用wp-config.php調整WordPress內存限制
適用情境說明
若無法直接修改php.ini,或僅需針對單一WordPress網站調整內存,建議使用wp-config.php設定。
設定步驟
- 透過FTP或主機面板下載
wp-config.php。 - 在
/* That's all, stop editing! Happy publishing. */這行上方,新增:define('WP_MEMORY_LIMIT', '256M'); - 如需調整後台管理內存上限,可加上:
define('WP_MAX_MEMORY_LIMIT', '512M'); - 儲存並上傳。
注意事項
- 此設定僅在php.ini允許的範圍內有效。
- 若主機商有額外限制,仍需向主機商申請調整。

其他調整方式與特殊情境
使用.htaccess調整(僅限Apache)
php_value memory_limit 256M
- 將上述指令加入網站根目錄的.htaccess檔案。
- 部分主機不支援,修改前請先備份。
程式中動態調整
ini_set('memory_limit', '256M');
僅對當前PHP執行有效,適合短暫性或特定模組需求。
共享主機與雲端主機注意事項
- 部分主機商限制memory_limit最大值,需洽客服協助。
- 雲端主機(如AWS、GCP)可透過管理介面調整機器規格。
伺服器層級的內存優化建議
調整與監控伺服器內存配置
- 升級伺服器記憶體(RAM)規格
- 安裝與設定監控工具(如htop、top、New Relic)
- 定期檢查各站台與應用程式的資源消耗
PHP效能最佳實踐
- 使用Opcode快取(如OPcache)
- 精簡PHP程式碼與插件數量
- 優化資料庫查詢與檔案操作
- 啟用Gzip壓縮與瀏覽器快取
安全性與風險控管
- 避免將memory_limit設為過高,防止惡意程式消耗所有系統資源
- 定期更新PHP與相關插件,修補已知漏洞
- 設定錯誤日誌與警示機制,及早發現異常
內存優化與資源配置表
常見問題與最佳化經驗分享
經驗案例分享
某企業網站因資料匯入時頻繁出現內存不足,經調查發現部分自訂程式寫法不當,處理大量資料時未及時釋放記憶體。修正程式邏輯並調升memory_limit後,效能明顯提升且無再發生錯誤。
專業建議
- 調整memory_limit前,先審視應用程式本身是否有優化空間
- 對於高流量或大量資料處理網站,建議搭配伺服器升級或雲端擴展
- 定期檢查PHP版本與相依套件更新狀態

總結
PHP內存不足錯誤雖然常見,但透過正確的診斷、適當調整php.ini或wp-config.php的memory_limit值,以及善用伺服器監控與資源優化策略,多數問題都能迎刃而解。建議網站管理者定期檢查內存使用情況,並隨網站規模與流量適時調整配置,確保網站穩定運行與最佳效能。
常見FAQ
什麼情況下必須調高PHP的memory_limit?
當網站出現「Allowed memory size exhausted」錯誤,或有大量數據處理、匯入、圖片編輯等需求時,就需視情況調高memory_limit。
修改php.ini與wp-config.php有什麼差別?
php.ini為全域PHP設定,影響所有站台;wp-config.php僅適用於單一WordPress網站,且受php.ini最大值限制。
memory_limit設得愈高愈好嗎?
不建議設過高,應依網站實際需求調整,過高可能導致資源被濫用或安全風險。
調高memory_limit後,效能變慢是什麼原因?
若網站本身程式未優化,僅提高內存上限無法根本解決效能問題,建議同步檢查程式與資料庫效率。
如何確定memory_limit調整是否生效?
可透過phpinfo()檢查memory_limit值,或觀察原本出現的錯誤訊息是否已消失。





