引言
當網站或應用程式遇到「PHP內存不足」錯誤時,往往會導致頁面無法正常顯示或功能異常,影響用戶體驗與營運效率。本文將帶您深入了解PHP內存不足的常見原因、診斷步驟,以及如何透過調整php.ini或wp-config.php中的memory_limit參數,徹底解決問題。同時,還會分享伺服器配置優化的實用技巧,協助您提升網站效能、穩定性及安全性。不論您是站長、開發者還是網站維運人員,都能藉由本指南掌握解決PHP內存問題的關鍵知識與最佳實踐。
文章目錄
Toggle認識PHP內存不足錯誤及其影響
什麼是PHP內存不足錯誤
PHP是目前最常用的網頁伺服器端程式語言之一。當PHP腳本執行時,會依據memory_limit參數限制可用的最大記憶體空間。若執行過程中超過此限制,就會出現錯誤訊息,如:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 12345 bytes) in /path/to/file.php on line 100
這類錯誤通常發生於大量資料處理、圖片處理、複雜外掛、或是程式碼遞迴設計不良時。長期未解決會導致:
- 網站速度變慢或完全無法存取
- 後台管理作業失敗
- 資料遺失或異常
- SEO排名受影響
常見觸發情境與應用案例
- 上傳大型圖片或檔案時網站當機
- 大量匯入資料(如批次新增商品、會員)
- 使用複雜的WordPress外掛或主題
- 開發API、報表或爬蟲時資料量過大
實務經驗分享:大型電商網站經常因促銷活動短時間流量暴增,導致PHP內存消耗劇增。預先優化memory_limit與資源分配,可大幅降低服務中斷風險。
如何診斷PHP內存不足問題
檢查錯誤日誌與訊息
伺服器的錯誤日誌(例如 Apache的 error.log 或 Nginx的 error.log)通常會記錄詳細的內存錯誤訊息。建議:
- 登入主機管理介面,查閱近期錯誤日誌
- 搜尋關鍵字
memory或Allowed memory size - 記錄發生的檔案路徑與行數,方便追查程式問題
使用phpinfo()檢查當前memory_limit設置
在網站根目錄新增一個 phpinfo.php 檔案,內容如下:
<?php phpinfo(); ?>
存取此檔案即可查看 memory_limit 目前值,並檢查是否符合需求。(安全提醒:用完請立即刪除此檔案)
分析資源消耗來源
- 檢查是否有記憶體外洩(memory leak)或無限迴圈
- 評估使用的外掛、主題或自訂程式碼是否有不當記憶體調用
- 善用
memory_get_usage()函數追蹤程式執行過程的記憶體消耗情形
PHP內存不足的解決方案
調整php.ini中的memory_limit參數
什麼是memory_limit
memory_limit 代表每個PHP執行程序可用的最大記憶體量。預設值視主機供應商而異,常見如 128M、256M。
如何修改php.ini設定檔
- 透過FTP、SFTP或主機控制台登入網站根目錄
- 尋找 php.ini 檔案(有些環境為 user.ini 或 .htaccess)
- 編輯檔案,找到
memory_limit,如無則新增:
memory_limit = 256M
- 儲存後重啟Web服務(如Apache/Nginx),或依主機服務商指示進行重載
建議值:一般網站建議設為 256M,如有大量處理需求可提高至 512M(依實際硬體資源與應用需求調整)。
透過wp-config.php調整WordPress記憶體
WordPress用戶可直接在 wp-config.php 新增或編輯下列設定:
define('WP_MEMORY_LIMIT', '256M');
若需要調高後台管理的記憶體上限,亦可加入:
define('WP_MAX_MEMORY_LIMIT', '512M');
注意:主機服務商有時會限制最大可設定值,若設定後仍無法生效,請聯絡主機客服或升級主機方案。
透過.htaccess或user.ini動態調整
部分虛擬主機可在 .htaccess 或 user.ini 補充下列指令:
php_value memory_limit 256M
注意:並非所有主機支援此方式,若設定無效請改用php.ini或wp-config.php。
臨時調整單一PHP腳本記憶體
若僅需針對特定任務(如匯入、圖片處理)暫時提升記憶體上限,可於檔案開頭加上:
ini_set('memory_limit', '512M');
僅適用於該檔案執行期間,結束後即恢復全域設定。
伺服器配置與PHP效能優化實用技巧
選擇合適的主機資源
- 評估實體記憶體(RAM)是否足夠支撐memory_limit提升
- 選擇支援PHP多版本切換與自訂設定的主機方案
- 避免多個網站共用同一資源池,造成效能瓶頸
實務建議:VPS或雲端主機可彈性調整資源配額,適合成長型網站或高流量應用。
搭配OPcache提升PHP執行效率
啟用OPcache可將已編譯的PHP程式碼暫存於記憶體,加速載入速度並減少重複運算。
opcache.enable=1 opcache.memory_consumption=128
- OPcache適用於PHP 5.5以上版本,建議所有生產環境開啟
針對WordPress環境的優化建議
- 定期移除不必要的外掛與主題,減少資源浪費
- 使用效能良好的快取外掛(如LiteSpeed Cache、W3 Total Cache)
- 定期優化資料庫(可用WP-Optimize等工具)
- 限制圖片上傳尺寸,減少圖片處理時的記憶體消耗

進階PHP效能監控與調校
- 安裝APM(Application Performance Monitoring)工具,如New Relic、Datadog等
- 利用Xdebug分析函式呼叫堆疊與記憶體消耗
- 定時檢查程式碼是否有不必要的記憶體占用
PHP內存錯誤排除常見問題與最佳實踐
常見錯誤排查步驟
- 確認memory_limit已生效(phpinfo檢查)
- 檢查主機實體RAM是否足夠
- 檢查程式碼是否有無限迴圈或未釋放資源
- 移除非必要的外掛或大型套件
- 重啟Web服務確認設定套用
- 必要時聯絡主機服務商協助排查
最佳實踐總結表
總結
PHP內存不足錯誤是網站運維中常見的技術挑戰,但只要掌握正確的診斷工具、設定技巧與伺服器資源管理方法,就能有效降低問題發生率,提升網站穩定度與用戶體驗。建議養成定期檢查與優化的習慣,並依網站規模預先規劃主機資源。遇到瓶頸時,除了提升memory_limit外,也應檢討程式設計與外掛使用,避免資源濫用。若遇到無法自行解決的情境,尋求專業技術支援也是明智的選擇。
常見問答(FAQ)
- 如何判斷memory_limit設置是否已生效?
- 可建立phpinfo.php檔案,透過瀏覽器查閱memory_limit值,確認是否為預期設置。
- 提升memory_limit會有安全疑慮嗎?
- 若設置過高,惡意程式或外掛可能濫用記憶體導致主機當機。建議依實際需求設定,並定期檢查程式安全。
- 修改wp-config.php的WP_MEMORY_LIMIT後沒有效果怎麼辦?
- 可能主機端有強制限制,請聯絡主機服務商或試著修改php.ini。
- PHP 8.x的memory_limit建議設多少?
- 一般情境建議256M~512M,需視應用規模與主機資源調整。
- 什麼情況下需要升級主機或加購RAM?
- 當memory_limit已調高仍頻繁出現內存不足,或網站流量成長明顯,建議升級主機或加購RAM。





