首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

解決 phpMyAdmin 匯入資料庫 2048KB 限制:php.ini 三大參數調校指南

     編輯:PHP 相關知識

解決 phpMyAdmin 匯入資料庫 2048KB 限制:php.ini 三大參數調校指南

phpMyAdmin 匯入 SQL 檔案時,預設受限於 PHP 設定僅允許 2MB (2048KB)。本文說明三個關鍵 php.ini 參數的含義、調整原則、依伺服器規格的建議數值,並提供驗證步驟與常見陷阱。

三大關鍵參數

參數預設值功能建議調整
upload_max_filesize2M單一檔案上傳大小上限20M~100M (視需求)
post_max_size8MPOST 請求主體總大小上限 (含所有表單欄位)≥ upload_max_filesize + 10%
memory_limit128M腳本最大可用記憶體≥ post_max_size,建議 256M~512M
⚠️ 關鍵依賴關係:
memory_limit ≥ post_max_size > upload_max_filesize
違反此順序會導致上傳靜默失敗或截斷。

修改 php.ini 實際範例

; === 檔案上傳與記憶體設定 ===
; 允許上傳 50MB 的 SQL 檔案
upload_max_filesize = 50M

; POST 總大小略大於檔案上限 (含表單其他欄位)
post_max_size = 60M

; 腳本記憶體上限 (解析大型 SQL 需較多記憶體)
memory_limit = 256M

; === 額外建議參數 ===
; 最大執行時間 (大檔匯入可能超過 30 秒)
max_execution_time = 300

; 最大輸入處理時間
max_input_time = 300

; 允許的最大輸入變數數量 (防止大型陣列攻擊)
max_input_vars = 5000

依伺服器規格的建議配置

伺服器記憶體upload_max_filesizepost_max_sizememory_limit適用場景
1 GB (入門 VPS)20M25M128M中小型專案、部落格
2 GB50M60M256M電商、企業官網
4 GB+100M120M512M大型系統、資料遷移
8 GB+ (專用 DB 伺服器)200M250M1G巨量資料匯入、備份還原

修改生效步驟

  1. 編輯 php.ini (通常在 /etc/php/7.x/apache2/php.ini 或 /usr/local/php/etc/php.ini)
  2. 搜尋三個參數,修改數值並移除前方分號 ;
  3. 重啟 Web 服務:
    • Apache: systemctl restart apache2 或 service httpd restart
    • Nginx + PHP-FPM: systemctl restart php-fpm (Nginx 無需重啟)
  4. 驗證:建立 phpinfo.php 檢查生效值

驗證是否生效

<?php
// phpinfo.php
phpinfo();
// 搜尋 upload_max_filesize、post_max_size、memory_limit

或命令列快速查看:

php -i | grep -E 'upload_max_filesize|post_max_size|memory_limit'

常見問題排查

現象可能原因解決方案
修改後仍失敗編輯錯誤的 php.ini用 php --ini 確認載入路徑
上傳大檔案中斷Nginx client_max_body_size 限制在 nginx.conf http 區塊加 client_max_body_size 100M;
Apache 超時Timeout 設定過短Timeout 300 在 httpd.conf
PHP-FPM 回應 502request_terminate_timeoutrequest_terminate_timeout = 300 在 www.conf
記憶體不足錯誤memory_limit 過小調大 memory_limit 或分批匯入

替代方案:繞過 phpMyAdmin 限制

若資料庫極大 (>100MB),建議直接使用命令列工具,效能更好且無上傳限制:

# 匯出
mysqldump -u root -p --single-transaction --quick db_name > backup.sql

# 匯入 (最快、最穩定)
mysql -u root -p db_name < backup.sql

# 或壓縮傳輸
mysqldump -u root -p db_name | gzip > backup.sql.gz
gunzip < backup.sql.gz | mysql -u root -p db_name

安全性提醒

  • 生產環境不要將 upload_max_filesize 設過大,防止惡意上傳耗盡磁碟/記憶體。
  • phpMyAdmin 應限制存取 IP、強制 HTTPS、設定強密碼、或改用 VPN/SSH Tunnel 存取。
  • 定期清理 /tmp 與上傳目錄的暫存檔。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved