
當網站或應用程式運行時,遇到「PHP內存不足」錯誤(Fatal error: Allowed memory size…),不僅會影響用戶體驗,更可能導致功能中斷。本文將帶您深入了解這類錯誤的成因、如何有效調整 php.ini 或 wp-config.php 中的 memory_limit,同時探討伺服器層級的配置優化策略。無論您是PHP新手,還是進階開發者,都能透過本篇文章學會快速排除問題並提升網站穩定度。
文章目錄
Toggle認識PHP內存不足錯誤
錯誤訊息解析
當PHP腳本超過配置的記憶體限制時,會顯示如下錯誤訊息:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 4096 bytes) in /path/to/script.php on line 123
這表示PHP腳本所需的記憶體超過了memory_limit的設定值(此例為128MB)。
常見導致內存不足的原因
- 處理大型檔案(如圖片、CSV、XML等)
- 執行複雜或未優化的SQL查詢
- 大量資料迴圈處理、無限遞迴
- 外掛或主題存在記憶體洩漏(WordPress情境)
- 同時執行多個大規模任務
PHP memory_limit 的意義與調整方式
什麼是 memory_limit?
memory_limit 為PHP腳本執行時可使用的最大記憶體上限。若超出這個設定值,PHP將終止執行並拋出錯誤。適當設置 memory_limit 可避免單一腳本占用過多資源,影響整體伺服器效能。
如何調整 memory_limit 設定
1. 修改 php.ini 設定檔
-
透過SSH或主機管理介面(如cPanel),找到伺服器上的
php.ini檔案。 -
搜尋
memory_limit,如未找到請添加:
memory_limit = 256M - 儲存檔案後,重啟Web伺服器(如Apache、Nginx)。
圖片建議:顯示php.ini檔案編輯畫面,標註memory_limit設定處。

2. 在特定目錄的 .htaccess 設定
若您的主機採用Apache,可於網站根目錄下的 .htaccess 檔案加入:
php_value memory_limit 256M
注意:部分虛擬主機不允許此設定,若出現500錯誤請移除。
3. 於程式碼中設定(不建議長期使用)
可在PHP檔案開頭暫時增加記憶體限制:
ini_set('memory_limit', '256M');
僅建議用於特定腳本,勿濫用於全站。
WordPress站台如何調整 memory_limit
-
編輯
wp-config.php,於/* That’s all, stop editing! */前加入:
define('WP_MEMORY_LIMIT', '256M'); -
如為後台操作且仍無效,嘗試提升
WP_MAX_MEMORY_LIMIT:
define('WP_MAX_MEMORY_LIMIT', '512M'); - 儲存後重新整理網站或後台頁面。
圖片建議:顯示wp-config.php新增WP_MEMORY_LIMIT設定的畫面。
伺服器配置優化建議
提升記憶體配置時的思考要點
- 確認伺服器總記憶體容量,避免設定過高導致OOM(系統用盡所有記憶體)。
- 評估網站流量與腳本複雜度,適度調整memory_limit。
- 針對高需求應用,考慮升級主機或採用專用伺服器。
常見主機類型與記憶體配置建議
表格建議:
| 主機類型 | 預設memory_limit | 建議上限 | 說明 |
|---|---|---|---|
| 共享虛擬主機 | 64M–128M | 256M | 資源有限,建議適度提升並監控效能 |
| VPS/雲端主機 | 128M–256M | 512M–1024M | 可依需求調整,注意伺服器總記憶體 |
| 專用伺服器 | 256M以上 | 依主機配置與應用需求彈性調整 | 適合高流量、大型網站或多站架構 |
優化伺服器效能的其他實用建議
- 定期檢查與清理暫存、日誌檔,釋放系統資源。
- 善用OPcache、Memcached等快取技術,降低記憶體負擔。
- 監控PHP執行效能,如使用New Relic、Xdebug等工具。
- 針對高記憶體消耗的外掛或自訂程式進行優化。
- 保持PHP與相關擴充套件版本為最新,獲得最佳效能。
圖片建議:展示伺服器監控圖表與效能分析畫面。
實務經驗分享與常見案例
網站搬家與資料匯入經驗
某次協助客戶將WordPress網站搬遷至新主機時,因資料庫匯入過程涉及數萬筆資料,原本的memory_limit設為128M,導致匯入到一半就出現記憶體不足錯誤。臨時將memory_limit調升至512M,並優化匯入腳本後,順利完成作業。這說明在高負載作業時,適當提升記憶體及優化程式邏輯同等重要。
外掛衝突導致記憶體耗盡
某WordPress網站安裝多個功能性外掛,特別是SEO與備份相關外掛,導致後台操作頻繁出現記憶體耗盡錯誤。經過逐一停用外掛測試,發現某一備份外掛存在記憶體洩漏問題,移除該外掛並監控後,記憶體使用回到正常範圍。此案例提醒我們,除了調整參數,外掛選擇與管理同樣重要。
數據分析與圖片處理腳本優化
一份大型CSV數據分析腳本,原始寫法直接一次性載入所有資料,導致PHP記憶體爆掉。後來改採逐行讀取(如使用fgetcsv),記憶體消耗大幅下降,也減少了memory_limit的需求。這證明「寫得好」比「設得高」更能徹底解決問題。
排除PHP內存不足錯誤的步驟總結
表格建議:
| 問題現象 | 可能原因 | 檢查/解決步驟 | 建議工具 |
|---|---|---|---|
| Fatal error: Allowed memory size exhausted | memory_limit設定過低、腳本記憶體洩漏 | 提升memory_limit、檢查程式邏輯、停用外掛 | phpinfo(), Xdebug, WordPress健康狀態 |
| 執行大型匯入/匯出時中斷 | 資料量大、一次性載入太多資料 | 優化資料處理流程、設定較高memory_limit | fgetcsv(), MySQL LIMIT查詢 |
| 網站後台操作緩慢或異常 | 外掛/主題效能不佳、記憶體消耗過高 | 逐一停用外掛、分析記憶體用量 | New Relic, Query Monitor |
總結
PHP內存不足錯誤雖常見,但只要掌握memory_limit的正確調整方法,並配合伺服器資源與程式優化,皆能有效解決問題。建議每次調整後,務必監控網站效能與伺服器狀態,避免因參數設置不當反而影響服務穩定。若遇到複雜情境,可諮詢專業主機商或開發團隊,確保網站長期穩定與高效運作。
常見問答(FAQ)
提升PHP memory_limit 會有安全風險嗎?
若設定過高,有惡意腳本可能消耗大量資源導致伺服器效能下降。建議僅提升至實際需求,並搭配權限與安全控管措施。
調整 memory_limit 後網站仍報錯,怎麼辦?
可能是外掛或程式碼本身存在記憶體洩漏、無限遞迴等問題。建議檢查錯誤日誌、逐一停用外掛、優化程式邏輯。
共享主機無法修改 php.ini 怎麼辦?
可嘗試於 .htaccess 或 WordPress wp-config.php 設定,若仍無效需聯繫主機商協助。
如何知道目前的 memory_limit 設定值?
可建立一個PHP檔案,內容為 <?php phpinfo(); ?>,於瀏覽器開啟即可查閱詳細設定。
提升 memory_limit 對網站效能有幫助嗎?
僅在記憶體不足時有幫助,若原本效能瓶頸在程式邏輯或資料庫,仍需搭配其他優化措施。
本文由資深網站優化顧問團隊撰寫,擁有十餘年PHP與WordPress開發及伺服器管理經驗,專注於中大型網站效能最佳化與故障排除,內容皆經實務驗證。若需更進階的診斷與協助,歡迎諮詢本網站專業技術團隊。





