PHP內存不足錯誤是許多網站管理員與開發者常見的問題,無論是WordPress、Drupal還是自訂PHP專案,當內存分配不足時,網站容易當機或出現錯誤訊息。本文將帶你全面了解PHP內存不足的成因,掌握修改 php.ini 或 wp-config.php 提升 memory_limit 的實務操作,以及伺服器端的最佳優化配置建議。讀完本指南,你將能有效排除內存瓶頸,提升網站效能與穩定性。
文章目錄
Toggle認識PHP內存不足錯誤的本質
什麼是PHP內存不足錯誤
PHP執行過程中,若程式所需的記憶體超過預設的 memory_limit,就會出現類似下方的錯誤訊息:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 123456 bytes) in /path/to/file.php on line 123
這代表PHP試圖分配的內存超過了系統所允許的上限。
常見發生場景
- 匯入大型資料庫或CSV檔案時
- 執行複雜的圖像處理或PDF產生
- 外掛或主題設計不良導致記憶體洩漏
- 爬蟲或API整合造成大量暫存物件
PHP內存不足錯誤的成因與診斷流程
有效解決問題前,必須先找出瓶頸與根本原因。
常見成因
- PHP memory_limit 設定過低
- 程式有記憶體洩漏(Memory Leak)或無效循環
- 網站流量激增,導致同時請求內存總量超標
- 外掛或程式碼不當使用大量物件
- 伺服器硬體記憶體本身不足
診斷步驟
- 確認錯誤訊息,記錄出錯檔案與行數
- 檢查
phpinfo()或主機面板,查詢目前 memory_limit 設定值 - 檢視伺服器的實體記憶體用量(如
top、free -m) - 逐步排除外掛、主題或自訂程式碼的記憶體消耗
如何修改php.ini與wp-config.php提升memory_limit
修改php.ini方法
- 找到伺服器上的
php.ini設定檔(可用php --ini查詢) - 搜尋
memory_limit參數 - 將數值調整為需求大小,例如:
memory_limit = 512M
- 儲存檔案並重啟Web伺服器(如Apache、Nginx)
建議根據實際網站規模與流量進行調整,並避免無上限(-1),以防單一腳本耗盡全部記憶體。
修改wp-config.php方法
- 進入WordPress網站根目錄,打開
wp-config.php - 在
/* That's all, stop editing! Happy publishing. */之前新增:define('WP_MEMORY_LIMIT', '256M'); - 儲存檔案後刷新前台或後台頁面驗證

其他可用方法
- 於.htaccess中加入
php_value memory_limit 256M(僅支援Apache,且主機需允許) - 部分主機支援自訂user.ini或直接於cPanel調整
伺服器配置優化的實戰建議
除了單純調高memory_limit,還需從伺服器端全盤檢視整體配置,避免因單點提升反而造成其他服務資源不足。
調整memory_limit選擇標準
| 網站型態 | 建議memory_limit | 說明 |
|---|---|---|
| 個人部落格 | 128M ~ 256M | 一般用途足夠,偶爾需提升至256M |
| 中大型企業站 | 256M ~ 512M | 需支援高流量與多外掛 |
| 電子商務/大型內容站 | 512M ~ 1024M | 大量圖片、商品或複雜資料處理 |
硬體資源與PHP memory_limit的關聯
- 實體RAM越高,可設定的memory_limit越大
- 多站同伺服器需留意總記憶體分配,避免相互搶占
- 建議預留30%以上記憶體給系統與資安防護

搭配其他PHP效能參數調整
- max_execution_time:腳本最大執行秒數
- post_max_size、upload_max_filesize:檔案上傳限制
- opcache.enable:開啟PHP快取提升效能
可於php.ini同時調整,達到最佳效能。
虛擬主機、VPS與專屬主機的配置差異
| 主機型態 | memory_limit可調範圍 | 調整自由度 | 適用對象 |
|---|---|---|---|
| 虛擬主機 | 64M ~ 512M(依主機商) | 低,需依主機商規範 | 新手、低流量站 |
| VPS | 64M ~ 2048M以上 | 高,可自訂php.ini | 中小型企業、電商站 |
| 專屬主機 | 依硬體,無上限 | 最高,自由配置 | 大型網站、集團/媒體 |
實際案例解析與優化經驗分享
案例一:WordPress站台升級memory_limit後效能提升
某企業WordPress網站因啟用多個大型外掛,頻繁遇到內存錯誤。經分析後,將 WP_MEMORY_LIMIT 從128M提升至512M,並同步優化外掛與圖片壓縮處理,最終網站穩定運作且後台不再出現記憶體警告。
案例二:php.ini調整過高導致主機資源耗盡
某VPS用戶將memory_limit設至2048M,但伺服器僅有4GB RAM,結果多個站台同時高峰時造成Swap過高,系統變慢。調整為512M並優化PHP程式後,伺服器效能恢復正常。
經驗總結
- 調整memory_limit時應配合實體RAM總量與站台需求
- 建議逐步上調,並搭配效能監控觀察
- 定期檢查外掛與主題程式碼,避免記憶體洩漏
- 活用快取、CDN等外部資源減少PHP負擔
常見問題與疑難排解技巧
memory_limit已提升為何還是出現內存錯誤
- 部分主機有額外安全限制(如CloudLinux或cPanel限制)
- PHP-FPM與CLI可各自有不同設定,需同步調整
- 外掛或程式碼本身有結構問題,單純調高無效
memory_limit調到極高會有什麼風險
- 單一請求可耗盡全部主機記憶體,影響系統穩定
- 惡意攻擊時資源消耗更快,建議搭配WAF或資安防護
如何監控PHP內存使用狀況
- 可用
phpinfo()查詢即時配置 - Linux主機可用
top或htop觀察php-fpm或apache程序用量 - 建議安裝NewRelic、Datadog等APM工具即時分析
總結與最佳實踐建議
- 遇到PHP內存不足錯誤,先確認memory_limit設定,配合硬體資源與網站需求調整
- 優化程式碼結構、移除不必要外掛或功能
- 定期監控伺服器資源,有效分配並預防資源枯竭
- 善用快取技術與CDN,減輕PHP計算壓力
只要掌握上述技巧與最佳實踐,就能大幅降低PHP內存不足錯誤發生機率,讓網站更穩定高效運作。
常見FAQ
- 1. 提升memory_limit後網站會變慢嗎?
- 只要設定值合理,通常不會影響速度。但若設定過高導致主機整體資源枯竭,反而會變慢。
- 2. WordPress設定WP_MEMORY_LIMIT無效怎麼辦?
- 部分主機的php.ini會覆蓋wp-config.php設定,需確認主機層級memory_limit是否同步調整。
- 3. 調整memory_limit後需要重啟服務嗎?
- 修改php.ini後需重啟Web伺服器(如Apache、Nginx),而wp-config.php則無需重啟。
- 4. 如何快速測試memory_limit是否生效?
- 建立一個PHP檔案,內容為
<?php phpinfo(); ?>,瀏覽即可檢查目前設定值。 - 5. VPS主機memory_limit建議設多少?
- 依網站規模與流量調整,建議256M~512M為佳,並預留30%以上RAM給系統。
如有需求歡迎向WPTOOLBEAR團隊立即聯繫





