phpMyAdmin 導入 SQL 檔案時提示:Max file size: 2,048 KiB,無法導入大型資料庫備份。
PHP 核心配置限制了上傳檔案大小、POST 資料大小與腳本記憶體上限,預設值過於保守:
upload_max_filesize = 2Mpost_max_size = 8M (需 ≥ upload_max_filesize)memory_limit = 128M (需 ≥ post_max_size)C:\php\php.ini 或 Apache/bin/php.ini/etc/php.ini、/etc/php/7.x/apache2/php.ini、/usr/local/php/etc/php.iniphp --ini 或 phpinfo() 確認載入路徑; 檔案上傳大小限制 upload_max_filesize = 100M ; POST 資料總大小限制 (必須 ≥ upload_max_filesize) post_max_size = 100M ; 腳本記憶體上限 (必須 ≥ post_max_size,建議更大) memory_limit = 512M ; 額外建議:執行時間限制 (導入大檔案需較久) max_execution_time = 300 max_input_time = 300
memory_limit (512M)
↑
post_max_size (100M) ← 含檔案+表單欄位
↑
upload_max_filesize (100M) ← 單檔案上限
# Apache sudo systemctl restart apache2 # 或 sudo service httpd restart # Nginx + PHP-FPM sudo systemctl restart php-fpm # 或 sudo service php7.4-fpm restart
或在 phpMyAdmin 首頁查看「PHP 資訊」區塊。
php_value upload_max_filesize 100M php_value post_max_size 100M php_value memory_limit 512M
upload_max_filesize = 100M post_max_size = 100M memory_limit = 512M
放置於專案根目錄,PHP 會自動讀取 (需 user_ini.filename 配置)。
編輯 config.inc.php:
$cfg['UploadDir'] = '/var/lib/phpmyadmin/upload/'; $cfg['SaveDir'] = '/var/lib/phpmyadmin/save/'; $cfg['ExecTimeLimit'] = 300; // 覆蓋 max_execution_time
將大型 SQL 檔案上傳至 UploadDir,phpMyAdmin 介面會顯示「從伺服器上傳目錄導入」選項,繞過 HTTP 上傳限制。
| 現象 | 原因 | 解決 |
|---|---|---|
| 修改後仍限制 2M | 修改錯誤的 php.ini、未重啟服務 | phpinfo() 確認 Loaded Configuration File |
| 導入超時 | max_execution_time 過小 | 調大至 300-600 秒 |
| 記憶體耗盡 | memory_limit 過小 | 調大至 512M+,或分割 SQL 檔案 |
| Nginx 413 錯誤 | client_max_body_size 限制 | nginx.conf: client_max_body_size 100M; |
修改 upload_max_filesize、post_max_size、memory_limit 三大參數並重啟服務,即可解決 phpMyAdmin 導入大小限制。生產環境建議搭配 max_execution_time、Nginx client_max_body_size、分割大檔案等多重保障。