首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

XAMPP PHP memory_limit 設置 1024M 仍報內存耗盡排查

     編輯:程式設計綜合問答

現象

Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 8925 bytes)
in D:\xampp\htdocs\testlink\lib\results\resultsTC.php on line 586

已將 memory_limit = 1024M 但仍報錯(1073741824 bytes = 1024M)。

原因分析

  1. 修改錯誤的 php.ini:XAMPP 有兩個 php.ini:
    • D:\xampp\php\php.ini (CLI 模式)
    • D:\xampp\apache\bin\php.ini (Apache 模式,**Web 請求生效**)
    必須修改 Apache 目錄下的 php.ini。
  2. .htaccess 覆蓋:項目目錄下 .htaccess 可能含 php_value memory_limit 256M 覆蓋全局設置。
  3. 代碼中 ini_set:腳本開頭 ini_set('memory_limit', '512M') 降低限制。
  4. 32 位 PHP 限制:32 位進程最大寻址 2-4GB,但實際受限於系統配額,分配大塊連續內存可能失敗。
  5. 單次分配過大:錯誤提示 tried to allocate 8925 bytes 很小,說明是**累積分配**達到上限,而非單次大分配。

排查步驟

  1. 創建 info.php:,瀏覽器訪問確認 memory_limit 實際值。
  2. 檢查 D:\xampp\apache\bin\php.ini 中 memory_limit = 1024M(或 -1 無限制)。
  3. 重啟 Apache:XAMPP Control Panel → Stop/Start Apache。
  4. 檢查項目 .htaccess 和代碼 ini_set。
  5. 優化代碼:分批處理、釋放變量、使用生成器、避免一次性載入大數據集。

TestLink 特定優化

  • 導出報表時分頁/流式輸出,而非一次性構建巨大數組。
  • 增加 max_execution_time 防止超時。
  • 考慮升級 64 位 PHP/XAMPP。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved