在網站開發與管理過程中,PHP內存不足錯誤(PHP memory limit exhausted)常常讓工程師與站長感到困擾,不但導致網站無法正常運作,有時甚至影響SEO和用戶體驗。本文將系統性說明PHP內存不足的成因,並詳細指導如何透過修改php.ini、wp-config.php等方式增加memory_limit,同時分享伺服器配置與效能優化策略。無論你是WordPress網站經營者、PHP工程師或伺服器管理員,本文都將提供全面的解決方案與實務建議,助你輕鬆排除錯誤並提升網站穩定度。

文章目錄
Toggle認識PHP內存不足錯誤的成因與影響
什麼是PHP內存不足錯誤
PHP內存不足錯誤常見訊息為:
Fatal error: Allowed memory size of XXX bytes exhausted
這代表目前的PHP腳本執行時,所需記憶體超過了系統所設定的memory_limit上限,導致無法繼續執行程式。
常見觸發情境與影響
- 網站流量突然增加,導致PHP處理大量請求時超出記憶體限制
- WordPress或Drupal等CMS執行大型外掛/主題或匯入大量資料時
- 批次處理圖片、生成縮圖、匯出大型報表等操作
- 自訂PHP應用程式記憶體洩漏或不當迴圈
- 伺服器資源不足或配置不佳
這類錯誤不僅會導致網頁無法顯示、功能異常,還可能造成搜尋引擎索引失敗、用戶流失,甚至影響商業營收。
快速檢查與診斷PHP內存不足問題
如何查看目前的memory_limit設定
- 在終端機執行
php -i | grep memory_limit - 於網站根目錄建立
phpinfo.php,內容如下:<?php phpinfo(); ?>然後瀏覽該檔案即可查到 memory_limit 相關資訊。
- WordPress可於「工具」>「網站健康」查詢環境資訊
圖片建議:插入phpinfo畫面截圖,標示出memory_limit數值
診斷錯誤來源
- 查看 error_log 日誌,搜尋「Allowed memory size」相關訊息
- 觀察是哪個外掛、主題或PHP檔案導致錯誤
- 確認記憶體瓶頸是否來自特定功能、插件或API請求
調整php.ini記憶體限制的步驟
php.ini memory_limit設置方法
-
找到伺服器上的php.ini設定檔,常見路徑如:
/etc/php/7.x/apache2/php.ini或/etc/php/7.x/cli/php.ini
(不同主機或PHP版本路徑略有不同) -
搜尋
memory_limit參數,預設值常為128M或256M。 -
將其修改為所需值,例如
512M、1024M,儲存檔案。 -
重啟Web服務(如Apache、Nginx)以套用設定。
例如:sudo systemctl restart apache2
專業建議:請根據實際伺服器資源設定,切勿無限制地提高memory_limit,以免影響整體效能與穩定性。
圖片建議:插入php.ini編輯畫面範例
常見memory_limit建議值比較表
| memory_limit設定值 | 適用情境 | 注意事項 |
|---|---|---|
| 128M | 基礎WordPress、簡易網站 | 部分外掛可能不足 |
| 256M | 中型網站、輕量插件 | 較佳穩定性 |
| 512M | 多媒體網站、WooCommerce電商 | 推薦最低值 |
| 1024M | 大型網站、批次處理、大型圖片生成 | 需確認伺服器可支援 |
WordPress網站快速調整記憶體限制
修改wp-config.php方法
- 於網站根目錄找到
wp-config.php - 在
/* That's all, stop editing! Happy publishing. */之前插入:define('WP_MEMORY_LIMIT', '256M'); define('WP_MAX_MEMORY_LIMIT', '512M');說明:WP_MEMORY_LIMIT 控制前台記憶體,WP_MAX_MEMORY_LIMIT 控制後台(如匯入、編輯器等較高需求)。
- 儲存並上傳檔案後重新整理網站
- 可再使用健康檢查工具確認設定是否生效
圖片建議:插入wp-config.php檔案實際編輯畫面
其他CMS或主機常見設置方法
- .htaccess(僅限Apache主機):
php_value memory_limit 256M - cPanel/Plesk主機:可於面板內直接調整 PHP 設定
- 自訂PHP腳本:
ini_set('memory_limit', '256M');(僅對當前腳本生效)
伺服器層級的配置優化與記憶體管理技巧
選擇合適的主機與硬體資源
- 虛擬主機:通常限制memory_limit較低,適合小型網站
- VPS或雲主機:可自訂PHP與系統參數,彈性高
- 專屬主機:適合大型、高流量網站,建議配置8GB以上RAM
表格插入建議:主機類型、可調整彈性、適用規模、費用區間

多站或高流量架構的記憶體分配策略
- 利用OPcache提升PHP效能,降低重複編譯耗用
- 避免單一網站或程式獨占所有記憶體,適當分配資源
- 可考慮開啟PHP-FPM進程隔離,減少互相干擾
- 監控服務如NewRelic、Datadog,定期追蹤記憶體使用狀況
圖片建議:插入伺服器記憶體監控儀表板截圖
Linux系統記憶體優化建議
- 定期清理不必要的背景服務與進程
- 適度調整swap空間,避免記憶體爆滿導致系統當機
- 設定ulimit,限制單一進程最大可用記憶體
- 使用
top、htop、free -m監控即時資源
經驗分享:曾有WordPress多站架構專案,單一站點匯入大量資料時未限制memory_limit,導致主機記憶體用盡,影響其他站點運作。後續調整各站點memory_limit與進程數,並搭配OPcache,成功降低錯誤發生率。
進階效能調校與常見陷阱
常見導致記憶體爆滿的程式錯誤
- 無窮迴圈、未釋放資源的物件
- 大量資料一次性載入(如select * from大型資料表)
- 外掛或主題記憶體洩漏(memory leak)
- 未優化的圖片處理與檔案上傳流程
專業建議:在提升memory_limit前,務必檢查並優化程式或外掛,否則僅是治標不治本。
如何追蹤與優化記憶體用量
- 善用
memory_get_usage()、xdebug等工具進行記憶體分析 - 分段處理大量資料,避免一次性載入
- 優化SQL查詢,降低不必要的資料撈取
- 使用CDN與快取機制分擔伺服器壓力
推薦外掛與伺服器監控工具
- WordPress外掛:Query Monitor、WP Server Stats
- 伺服器監控:NewRelic、Datadog、Zabbix、Prometheus
- 程式碼剖析:Xdebug、Blackfire
圖片建議:插入Query Monitor或伺服器監控工具介面截圖
總結:PHP內存不足錯誤排除與網站穩定運作關鍵
面對PHP內存不足錯誤,正確的處理方式應兼顧「提高memory_limit」與「優化程式效能」兩大方向。無論是直接編輯php.ini、wp-config.php,或是調整伺服器配置,最重要的是根據實際需求與資源分配,避免一味提升限制導致新問題。搭配日常監控、定期維護與效能優化,才能確保網站持續穩定運作,提升用戶體驗並強化SEO表現。
FAQ
什麼情況需要提升PHP的memory_limit?
當網站出現「Allowed memory size exhausted」錯誤,或執行大型匯入、圖片處理、批次作業等高消耗工作時,就需考慮提升memory_limit,並檢查是否有資源不足或程式優化空間。
php.ini、.htaccess與wp-config.php調整memory_limit有何差異?
php.ini為伺服器層級全域設定,.htaccess限於Apache伺服器、可針對目錄調整,wp-config.php主要作用於WordPress網站,三者可依實際權限與需求選擇。
提升memory_limit會不會影響伺服器安全或其他網站?
若伺服器上有多個網站或服務,單一網站占用過多記憶體可能導致其他網站效能下降,甚至系統不穩。建議依據主機總資源合理分配,並搭配資源監控。
WordPress修改WP_MEMORY_LIMIT後沒有效果怎麼辦?
可能是主機php.ini限制高於wp-config.php設定,建議同時檢查php.ini與主機管理後台的PHP設定,或聯繫主機商協助調整。
有哪些工具可以協助追蹤PHP記憶體使用狀況?
可使用phpinfo、Query Monitor、WP Server Stats、NewRelic、Datadog等工具,針對不同層級進行即時監控與分析,及早發現潛在風險。





